COORDINATE POSITIONING SYSTEM

Abstract: A coordinate measuring machine has X and Y component drives for a probe. The two drives are driven to produce a resultant motion describing a curve having a given start velocity vector, a given end velocity vector, and following a given velocity function V=f(K, t) wherein K = a maximum acceleration term and t = time. A computer is programmed to determine the X and Y components (V1X, V1Y) of the start velocity vector and the X and Y components (V2X, V2Y) of the end velocity vector. Thereafter the program determines the difference (DVX) between the X component (V1X) of the start velocity vector and the X component of the end velocity vector, and computes values of the function V=f(K, t) for that difference (DVX). Proportionate values are computed for the difference (DVY) of the respective Y components (V1Y, V2Y) of the start and end velocity vectors. The values are output to the respective X and Y component drives of the machine to drive the probe through the resulting curved path. Preferably the acceleration term has a triangular characteristic so as to define a constant rate of change of acceleration starting and ending with zero acceleration. This avoids impulsive motion of the probe. Other acceleration terms may be used. For example, the acceleration may vary sinusoidally or it may be constant.

Description: CQORDINATE POSITIONING SYSTEM Field of Invention This invention relates to a coordinate positioning system. More specifically, this invention relates to a method of and means for operating first and second coordinate positioning drives of a coordinate positioning apparatus to produce a resultant movement describing a curve. It is an object of this invention to enable said curve to be generated on the basis of a consideration of velocity vectors at the start and the end of the curve and with a view to avoiding unduly impulsive motion. The scope of this invention is specified in the claims hereto. Brief Description of the Drawings An example of a system according to this invention will now be described with reference to the accompanying drawings wherein:- Fig. 1 is an elevation of a coordinate measuring machine. Fig. 2 is an enlarged view on the line II-II in Fig.l showing additionally a diagram of a path to be described by a member of the machine. Fig. 3 is velocity/time diagram of the movement of said member along said path wherein said path is defined by two spatial vectors connecting three points. Fig. 4a is a velocity/time diagram similar to Fig. 3 but wherein the spatial vectors are connected by a curve. Fig. 4b is an acceleration/time diagram of Fig. 4a. Fig. 5 (Figs. 5a to 5e) is a flow diagram of a computer program and shows a main routine. Fig. 6 (Figs. 6a to 6b) is a flow diagram of a first sub-routine of the program. Fig. 7 (Figs. 7a to 7b) is a flow diagram of a second sub-routine of the program. Fig. 8 is- a flow diagram of a third sub-routine of the program. Description of Preferred Embodiment The machine (Fig.l) has a probe 10 supported for three—dimensional motion in directions X,Y and Z. Measurement of the co-ordinate position of a surface of a workpiece 12 is determined automatically when the probe is moved into engagement with that surface. The motion of the probe is effected by motors MX,MY,MZ controlled by position-determining signals MX1,MY1,MZ1 generated by a computer 11 on the basis of position feedback signals MX2,MY2,MZ2 output by position-reading devices (not shown). For present purposes only the drive to the motors MX, Y is considered. By way of example, the machine is required to measure the position of two surfaces 13,14 (Fig.2) at opposite sides of a projection 15. Thus the probe, when moving from the surface 13 to the surface 14, has to circumnavigate the projection 15. To this purpose the computer has a program 99 (Fig. 1) to drive the probe along a path through points A,D,E,C wherein the path AD is part of a spatial vector SAB and the path EC is part of a spatial vector SBC. The vectors SAB, SBC are postulated to provide an initial orientation for the path, and a curve DE is introduced to shorten the path and to avoid the sharp change of direction which would occur if the movement were taken to the common point B of the two spatial vectors. Further, there is postulated for each path AB,BC a velocity vector VAB.VBC defined by a basic velocity profile VP1,VP2 (Fig. 3) comprising an initial acceleration period I, II, a period III of steady maximum velocity VI or V2, and a final deceleration period IV,V. Such a basic profile is required to provide for the occasions when there is no need for a curve such as DE, e.g. if the probe 10 is required to reach the point B and stop there. However, inasmuch as there is need for the curve, the latter is arranged to connect the basic velocity profiles at the respective phases III of steady velocities thereof. Further, primarily for the reason that direction of the two paths AB,BC differ, there arises (as will be seen) a need for the curve itself to have a velocity profile and the program is written to provide for this. The program is written to treat the spatial vectors SAB, SBC, the curve DE, and the velocity profiles VP1,VP2, entirely in terms of co-ordinate components Thus, bearing in mind that the example deals with the two—dimensional case, each spatial vector has X and Y spatial components of its end points AX,AY,BX,BY,CX,CY (Fig. 2), and each velocity profile has X and Y velocity components V1X, V1Y, 2X, V2Y (Fig. 3). The motors MX,MY may be driven by velocity demand signals. However it has been found appropriate to generate these signals as position demand signals MX1,MX2 (Fig. 1) by writing the program to determine the co-ordinates of closely spaced points P (Fig. 2) along the path ADEC in terms of position increments per unit interval of time T (Figs. 3,4), and the increments are output to the motors at those unit intervals. To this end, the computer 11 includes a clock 98 (Fig. 1) having a clock signal 98A occurring at the intervals T and connected (as described later hereinbelow) to control the output of the signals MX1, MY1. Therefore the speed of any one motor " is determined by the magnitude of the position increments the motor has to satisfy in unit time. Although, as stated, the motors are driven by position demand signals in terms of demands for specified position incremental, it is appropriate to illustrate the program in terms of velocity/time as has been done in Figs.3 and 4. Reviewing the program at first in general terms, the programmer introduces the parameters of the basic velocity profiles VP1,VP2 (Fig. 3), i.e. the values of the spatial co-ordinates of the points A,B,C, the values of the maximum steady velocities VI, 2, and the value of an acceleration term K (Figs. 4b and 7) defining a maximum rate of change of acceleration. The program determines the component profiles VlX(t), VlY(t),V2X(t) , V2Y(t) of the basic profiles, each component profile having a component acceleration rate and a steady velocity component V1X, 1Y, V2X, V2Y. It is only necessary to compute one of the X or Y component profiles, because the other component profile can be generated by scaling, i.e. by generating proportionate values, which saves computing time. To this end the program determines, in each basic profile, which of the components is the greater. It will be clear from Fig.2 that the spatial component (BX-AX) is greater than the spatial component (BY-AY) so that the component velocity V1X must be greater than the component velocity V1Y if the X and Y movements are to meet simultaneously at the point B. It is preferred to carry out the computation in respect of the larger component and to scale the lesser one because if the latter is very small it would not be possible to produce an accurate scaling of the larger component. Next, the program generates the curve DE, that is it determines the coordinate positions of points P between the start and end points D,E of the curve. Here, use is made of the now existing steady velocity components V1X, 2X, V1Y, V2Y. It is sufficient to compute one of the components X or Y for the curve on the basis of one pair of the steady velocity components V1X.V2X or V1Y,V2Y and then scale the other component of the curve accordingly. Clearly, it is desirable that the computation is done for that component of the curve which connects the pair of steady velocity components V1X.V2X or V1Y.V2Y which have the greater difference DVX or DVY (Fig. 3) between the highest and lowest values. To this end the program determines the difference DVX between X components V1X,V2X and the difference DVY between the Y components V1Y, 2Y of the two basic profiles VP1,VP2, and determines which of the differences DVX or DVY is the greater. The appropriate component profile DVPX or DVPY of the curve is then computed on the basis of the component velocities having the greater said difference. The rate of change of acceleration aX or aY (Fig. 4b) necessary for this purpose is preferably the same as that used for the initial acceleration period I, II of the relevant profile. It will be understood that the curve DE is determinable independently of the basic profiles so long as the start and end vectors and the rate of change of acceleration are given. When determining the curve, the coordinates of the points D,E arise in the same way as any other point P, and this determines when the steady velocity VI has to end, and when the steady velocity V2 has to begin. Fig. 4a shows how the profiles V1X.V1Y, V2X.V2Y are discontinued between the points D,E and are replaced by component profiles DVPX and DVPY of the curve DE. Following determination of the start and end points of the curve, and consequent determination of the end and start points for the steady velocities, the curve fits automatically between the latter velocities as shown at periods VI, VII. It will be seen that the curve DVPX starts and ends with zero deceleration at time points td and te respectively. Medially between the points td,te, at the junction of the periods VI, VII, the deceleration is a maximum. The curve DVPY has a corresponding acceleration characteristic, hence the change of momentum of any mass moved in accordance with the combined profiles DVPX,DVPY starts and ends with zero change and has a maximum change medially therebetween. This arises from the use of a said constant rate of change of acceleration or deceleration. As a result each component movement has a motion which is free from impulse with consequential benefit for the resultant movement. The profiles DVPX,DVPY are derived from a resultant velocity function V=f(K,t) wherein X = a maximum acceleration term and t = time. Each profile DVPX,DVPY may be said to be a corresponding function f(K,t) of a velocity difference DVX or DVY (Fig. 4a), wherein the two functions have the same start point td and the same end point te in time, wherein both functions follow the same law, wherein the values of the two functions have proportions determined by the respective start and end velocities V1X.V2X or V1Y,V2Y, and wherein each function is symmetrical about the mid-point between the start and end times td,te. In the example, the acceleration term K has a triangular characteristic so as to define said constant rate of change of acceleration, starting and ending with zero acceleration, thereby having the benefits mentioned. The functions may have other acceleration terms as described later herein. As mentioned, the basic velocity profiles VP1.VP2 are determined on the basis of a given maximum velocity and of a given rate of change of acceleration. It follows that the greater the steady velocity VI, V2 the greater are the periods I, II of initial acceleration, the periods VI, II of deceleration/acceleration of the curve DE, and the period IV, V of final deceleration, and the shorter are the periods III of steady velocity. In order to fit the curve successfully between the initial acceleration at period I, II and final deceleration IV, , two conditions have to be met. Firstly, the period VI, II of the curve DE must not be less than can be accommodated between the end of the steady velocity period III of the first vector VAB and the beginning of the steady velocity period III of the second vector VBC. If that should be the situation, the remedy is to extend the steady period III of the first profile VP1 beyond that originally produced. Correspondingly the steady velocity period III of the second profile VP2 may have to be started earlier. Secondly, the period VI, VII of the curve DE must not be greater than can be accommodated between the start of the steady, velocity period III of the first profile VP1 and the end of the steady velocity period III of the second profile VP2. If the latter condition is not satisfied, the remedy is to lower the steady velocity from its maximum value with the consequence of reducing the periods I, II of initial acceleration, the period of the curve VI, II and the period IV,V of final deceleration. The remedies described are determined by the programmer by appropriate selection of the maximum steady velocities VI, V2 and the maximum rate of change of acceleration for any given pair of spatial vectors SAB,SBC. Referring now to the program 99 in detail (Figs. 5 to 8), there are the following routines and identifiers. Identifiers of Main Routine 100 AX = co-ordinate positions of A AY = BX = co-ordinate positions of B CX = co-ordinate positions of C nγ _ I! ft It VI = steady part of VP1 V2 = " " " VP2 V1X = steady part of VlX(t) V1Y = " " " VlY(t) LUT1X = look-up table of position increments of X component of the velocity profile VP1. LUT1Y = look-up table of position increments of Y component of the velocity profile VP1 NG2 = number of sampling periods needed to move between points A,G2 G2X = X co-ordiante of the point G2. G2Y = Y " it « H « V2X = steady part of VP2X V2Y = " » ι VP2Y LUT2X = look-up table of position increments of X component of a velocity profile VP2. LUT2Y = look-up table of position increments of Y component of a velocity profile VP NH2 = number of sampling periods needed to move between points B,H2 H2X = X co-ordinate of point H2 H2Y = Y " « it DVX = difference between V1X.V2X DVY = " V1Y.V2Y NC = time period (te-td)/2 (Fig. 4) LUTDX = look-up table of position increments of velocity difference profile BVPX LUTDY = look-up table of position increments of velocity difference profile DVPY DX = X-position of D DY = Y " EX = X-position of E EY = Y " " N = first index for look-up tables. ACCX = accumulated increments of table LUTIX or LUT2X. ACCY = " - " « » LUT1Y or LUT2Y. Nl = second index for look-up tables Indentifiers of Sub-routine 200 SPIX = X-co-ordinate of start point for a velocity profile e.g. VlX(t) . SP1Y = Y-co-ordinate of start point for a velocity profile e.g. VlY(t) SP2X = X—co-ordinate of end point for a velocity profile e.g. VlX(t) . SP2Y = Y-co-ordinate of end point for a velocity profile e.g. VlY(t). SV1,2 = desired max. velocity of a velocity profile e.g. VI. SD1X = difference between SP2X and SPIX = X component length of a vector e.g. SAB. SD1Y = difference between SP2Y and SP1Y = Y component length of a vector e.g. SAB. SL = length of a vector e.g. SAB. SV1X = X-component of SV1,2. SV1Y = Y-component of SV1,2. LVX = look-up table of position increments of X-co. ponent of a velocity profile e.g. VlX(t) SVPJ = number of sampling periods needed to move between two points e.g. A,G2. CRENDX= X-co-ordinate of a point e.g.G2. LVY = look-up table of position increments of Y-component of a velocity profile e.g. VlY(t), CRENDY= Y-co-ordinate of a point e.g. G2. Identifiers of Sub-routine 300 SD = component length of a vector e.g. BX-AX, SV = component speed for movement along SD. SN = index for a look-up table. SCREND = co-ordinate of a point e.g. G2X. K = maximum rate of change of acceleration SVPT1 = a half period of an acceleration/deceleration curve e.g. the half-period I. SVPTEND= time needed for movement along the component length SD. SVPN = number of sampling periods T in the half-period SVPT1. SVPM = number of sampling periods T in the constant speed run of a velocity profile component e.g. VlX(t). SJ = The number of sampling periods T in the time needed for movement between the beginning and the end (e.g. the points AX and G2X of a velocity profile component e.g. VlX(t)). SLV = look-up table of position increments for a velocity profile component (e.g. VlX(t)) Identifiers of Sub-routine 400 SDV = a velocity difference (e.g. DVX). TCURVE = a half-period (e.g. VI) of a velocity difference profile (e.g. DVPX). SNC = number of sampling periods T in the half-period Tcurve. RN = an index for a look-up table. LCG = a look-up table. Main Routine 100 (Fig. 5) The successive steps of the program 100 are now recited with comment where appropriate. 1G1 - loading of data into subroutine 200 for determination of the increments in co-ordinate position corresponding to the velocity profile VP1 and the co-ordinate velocities V1X,V1Y of the steady part of VP1 (Fig. 2b). See steps 116-143 below. 102 — Loading of data into subroutine 200 for determination of the increments in co-ordinate position corresponding to the velocity profile VP2 and the co-ordinate velocities V2X,V2Y of the steady part of VP2 (Fig.- 2c). 103 - Establishing the difference DVX (Fig. 3) between the co-ordinate velocities V1X.V2X and the difference DVY between the co-ordinate velocities V1Y,V2Y. 104 - Establishing which of the differences DVX or DVY is the greater. It will be appreciated that when moving between the points DE there would normally be a need for a velocity change between the X components of the steady velocities of the two vectors and another such change between the Y components. The velocity profile to be established for the curve DE is determined by the greater of those two changes. It is assumed in this example that the difference V1X-V2X is greater than V1Y-V2Y so that the program proceeds along the "yes" arm of the decision 104. 105 - Loading of the value DVX into subroutine 400 for determination of the position increments defined in look-up tables LUTDX of the X coordinate DVPXa of the velocity difference profile DVP. The profile DVPXa is an absolute value not taking account of the sign of DVPX. The time period NC becomes available at this time. In the present example the profile DVPX falls with time so that its sign is negative and this will be determined at steps 107, 108 below. Further in the present example the change between the velocities V1X,V2X is not so much a a matter of magnitude but a matter of direction, i.e. V1X is positive while V2X is negative. This reversal of sense of direction means that the movement has to stop and reverse at a point F (Figs. 2,4) and the computations shown take account of this. 106 - Establishing the value of position increments defined in look-up table LUTDX of the Y coordinate of the difference profile DVP as a proportion of LUTDX in the ratio of (V1Y-V2Y) : VX. 107 - Decision to establish whether the difference V1X-V2X is less than zero. 108 - The "yes" arm of 107 determines that LUTDX is negative in accordance with Fig. 4. '109 - Determining the X coordinate DX of the point D as a function of (BX-AX) and of a distance being a function of VlX and half of the number NC of sampling periods pertaining to the total curve time. 110 - Same as 109 but for Y coordinate of point D. 111,112 - Same as 109,110 but for X,Y coordinates of point E. 113 — Initializing the number N of the look-up tables LUTIX, UT1Y. This number being held in an appropriate counter (not shown). Initializing the sum ACCX. Initializing the sum ACCY. 114 — Decision as to whether the point D occurs after point G2. If so, the constant speed is continued beyond the point G2 until a position defined by the coordinates of the point D is reached. In the present example the answer is "no". If "yes" go to 123. 115 - Await the signal 98A from the clock 98. As mentioned with reference to Figs. 3,4, the signal 98A establishes the time intervals T at which the signals MX1,MY1 are output. 116 - The same as 115, but coming into operation if point D occurs after point G2. 117 - Output position increments for the motor MX to drive the machine in the X component of the path AD. The information is generated as positions required at time intervals given by the clock 98 of the computer 11 and held in the table LUTIX. 118 - Establishing the sum ACCX which is a measure of the distance travelled in the X coordinate. 119 - Same as' 117 but in respect of the Y component of • the path A . 120 - Same as 118 but in respect of the sum ACCY. 121 - Decision to establish whether the point D has been reached. If "no" go to step 122. If "yes" go to step 120. At this time, as in step 127, the number N is that pertaining to the point D and the corresponding increments in the look-up tables LUTIX, LUT1Y pertaining to the constant run values V1X,V1Y. 122 - Updating of the serial number N of the look-up tables. 123 ) 124 ) The same as 117,118,119,120, but coming -15- 125 ) into operation if point D occurs after point G2. 126 ) 127 - Decision as to whether the serial number N has reached the number NG2 defining the position of the point G2. If "no" the action goes to step 128. If "yes" go to step 130. At this time, as in step 121, the number N is that pertaining to the point D and the corresponding increments in the look-up tables LUTIX,LUTIY pertain to the constant run values V1X,V1Y. 128 - The same as step 122. 129 - Decision to establish whether the point D has been reached. If "no" the action goes back to step 123 with the result of the last number N remaining effective, i.e. the speed remaining at the constant run values VlX, V1Y, until the point D is reached. 130 - Initializing the number Nl of the look-up tables LUTDX, UTDY. 130A - Same as 115. 131 — Output position increments for the motor MX to drive the machine in the X component of the curve DE. Note that the increment is the sum of the last increment LUTIX(N) leading to the point D and an increment LUTDX(Nl) defining the change in speed initializing the X component of the curve DE. 132 - Same as 131 but pertaining to the Y component of the curve DE . 133 - Decision as to whether the number Nl is such that point E has been reached. If "no" go to 134. If "yes" go to 135. 134 - Update the number Nl for the next cycle through steps 131,132. 135 - Initializing the number N of the look-up tables LUT2X,LUT2Y to a number NH2 pertaining to the last position increments of the constant run speeds V2X,V2Y, this being at the point H2. 136 - Initializing the sum ACCX to the value corresponding to the point E. 137 - Initializing the sum ACCY to the value corresponding to the point E. 137A Same as 115. 138 - Output position increments for the motor MX to drive the machine to the point C. 139 - Establish the sum ACCX which is a measure of the travel in the X coordinate. 140 - Same as 138 but for the Y coordinate. 141 - Same as 139 but for the Y coordinate. 142 - Decision as to whether the sums ACCX,ACCY are such that the point H2 has been reached. If "no" go to step 138. If "yes" go to step 143. 143 - Decision as to whether the sums ACCX,ACCY are such that the point C has been reached. If "no" go to step 144. If "yes" go to end. 144 - Update the number N and go to step 135. Subroutine 200 (Fig. 6) Subroutine 200 comprises the following steps:— 201 — Reading data from main program steps 101,102. 202 - Calculating the spatial components SD1X, SD1Y defining the the vector joining points SP1, SP2. 203 - Calculating the length SL of the vector joining the points SP1, SP2. 204 - Calculating X and Y component velocities SV1X.SV1Y. 205 - Decision as to which of the co-ordinate velocities SV1X,SV1Y is the greater in magnitude. Assuming the velocity SVIX to be the greater (as is the case with the velocity VlX between the points G1,G2 in Fig. 3), the decision leads to the "yes" branch. 206 - Load absolute values of SD1X,SV1X into subroutine 300 for calculating position increments LVX. 207 - Scaling of the profile LVY for the Y component, i.e. in this case the smaller component. 208 - Scaling the value CRENDX by the same factor as at step 207 to produce the value CRENDY. 209 - Decision as to whether SVIX is positive or negative. Assuming SVIX is negative (as in the case of V2X in Fig. 3), the decision leads to the "yes" branch. 210 - Multiply LVX by (-1). 211 - Multiply CRENDX by (-1). 212 - Output data to main program steps 101,102. It will be seen that the subroutine 200 establishes data defining a) the X,Y components SD1X, SD1Y of the spatial vectors SAB,SBC, b) the X,Y components V1X,V1Y,V2X,V2Y of the velocities VI, 2, c) in respect of each vector, which of the X, Y velocity components is the greater. Establishing these data is a necessary preliminary for establishing by subroutine 300, the actual velocity profiles of said greater components and the subsequent scaling of the other, lesser components. Subroutine 300 (Fig. 7) More specifically, subroutine 300, brought in at step 206 of subroutine 200, is concerned with determining increments in co-ordinate position corresponding to a velocity profile SV(t), in the present example the respective profiles VlX(t) and V2X(t). The subroutine 300 has the following steps: - 301 - Receiving from subroutine 200 data SD defining the vector component SD1X or SD1Y pertaining to the greater velocity component SVIX or SV1Y, the velocity component being received as data SV. 302 - Initializing a counter. 30 . 3 - Initialize the variable SCREND. 304 - Calculating the half-time SVPTl being the half the time period necessary to attain the maximum component velocity SV at a given rate of change of acceleration K. Note that, as shown in Fig. 3, there are in respect of each vector four such half-time periods SVPTl denoted I, II, IV, V. 305 - Calculating the total time SVPTEND required to traverse the distance SD wherein SVPTEND comprises the four half periods SVPTl (arranged to give acceleration and deceleration as shown in Fig. 3) and a further period III during which the movement takes place at constant speed SV. The latter period can of course be zero. 306 - Calculating the number SVPN of sampling periods T included in SVPTl. 307 - Calculating the number SVPM of sampling periods T included in period III. _£_• 308 - Calculating the number SJ of sampling periods T included in periods I, II, III. 309 - Decision whether the number SVPM is negative. If "no" go to step 311. If "yes", this indicates that velocity VI or V2 (input at step 101 of program 100) cannot be reached within the specified distance SD; go to step 310. 310 - Calculating a new value of SV such that the answer at step 309 becomes "no". This has the effect of reducing the time period III to zero, i.e. the velocity profile comprises only an acceleration and a declaration phase and the maximum speed attained is the best that can be achieved in the circumstances. 311 - Decision whether SVPN has been reached. See remarks for 312. 312 - Calculating the position increments SLV pertaining to the first half-period SVPTl, i.e. the period I of the profile VlX(t). The decision 311 monitors the progress of these increments and, when the profile has reached the last one of the number SVPN, the decision changes to step 313. The total number of values SLV produced in this way constitute a look-up table SLV. The position increments produced at steps 314,316,318,319 recited next below, are added sequentially to the table SLV. 313,314 - are respectively a decision and a calculation similar to those at steps 311,312 but pertaining to the portion II of the profile. 315,316 and 317,318,319 are the corresponding decisions and calculations for the periods III, IV, V of the velocity profiles VlX(t) or V2X(t). 320 - Accumulating the position increments calculated at steps 312,314,316. This provides the increments for periods I, II, III. Note that increments for the periods IV, are not required inasmuch as these periods are replaced later by period VI, VII (Fig.4) for the velocity profile DVPX of the curve DE. 321 - Decision whether the end of the velocity profile VP1 or VP2 has been reached. If "no" go to step 322. If "yes" go to 232. 322 - Increment the number SN by "1". 323 - Output the data identifying the variables SLV, SJ, SCREND to the main program 100. Subroutine 400 (Fig. 8) Subroutine 400 is concerned with determining increments in co-ordinate position corresponding to a velocity difference profile, in this example the profile DVPX (Fig. ). The subroutine 400 has the following steps:- 401 - Receiving from the main program 100 the data for a velocity difference SDV. 402 - Calculating the half-time T curve, i.e. the half-value of the time within which the curved transition between the vectors SAB, SBC is to take place, as a function of the velocity difference SDV, 403 - Calculating the number SNC of sampling periods T included in the half-time T curve. 404 - Initializing the value of the number RN. 405 - Decision whether SNC has been reached. See remarks for 406. 406 - Calculating the position increments pertaining to the first half of a velocity difference profile LCG, in the present example the profile DVP. The decision 405 monitors the progress of these increments and, when the profile has reached the last one of the number SNC, the decision 405 changes to the step 407. 407 - Calculating the position increments pertaining to the second half of the velocity difference profile LCG. The first and second halves of this velocity profile have respectively phases of increasing and decreasing acceleration, the acceleration being zero at the start and the end of the movement. The calculations 406,407 always start with the increasing acceleration phase. If, as in the case of the profile DVPX (Fig. 4) the curve is to start with the decreasing acceleration phase, the main program 100 acts at step 107,108 to multiply the output of steps 406,407 by -1. 408 - Decision whether the end of the velocity difference profile DVPX has been reached. If "no" go to step 409. If "yes" go to step 410. 409 - Increase the number RN by "1". 410 - Output the data identifying the variables SNC, LCG to the main routine 100. The curvature of the curve DE generated by the above program is determined by the start and end velocity vectors and by the rate of change of acceleration used for determining the component velocity profiles of the curve. This curvature has zero value at the start and end points of the curve and a maximum value intermediate therebetween. In the special case of the speeds of the start and end velocity vectors being the same, the maximum curvature lies medially between the start and end points of the curve. The rate of change is chosen to be uniform for the curve. This provides freedom from impulsive velocity changes and results in relatively simple computation so that the cycle time of the program is relatively low. However, inasmuch as it may be desirable to modify the curvature, this may be done by modifying the rate of change of acceleration in the sense of making it non—uniform. For example the rate of change may be sinusoidal, i.e. the acceleration may have a sinusoidal characteristic SI (Fig. 4b) in which case the curvature of the curve DE is uniform, i.e. the curve DE is a circular arc. As mentioned in connection with steps 131,132 of the program.99, the drive signals MX1,MY1 are position signals output at the uniform time intervals T, the magnitudes of any one pair of position signals MX1,MY1 determining the velocity of the resulting movement. In a modification (not illustrated) the program is adapted to generate the signals MX1.MX2 as velocity signals, the feedback signals MX2,MY2 then being constituted velocity feedbacks. The time interval T is of the order of 2 milliseconds and is chosen to be sufficiently short for machine control purposes and to be sufficiently long for one cycle of the program 99. The computer 11 is a modern microprocessor and the cycle time of the program 99 i.e. the time required to generate any one pair of signals MX1,MY1 and store this pair in a look-up table, is of the order of 100 microseconds. The output time for the signals MX1,MY1 to the motor is of the order of 40 microseconds. Thus the intervals T are much longer than the time necessary for generating and applying any one pair of signals MX1,MY1. It is therefore preferred to start the movement of the machine immediately following the generation of the first pair MX1,MY1. For simplicity, the program 99 is described along the lines of generating the whole of the necessary look-up tables before outputting the first pair of signals MX1,MY1. In practice the clock 98, which determines the intervals T, is used to interupt the program at each interval T to output any one "next" pair of signals MX1,MY1 from the look-up tables. In this way, the movement of the machine can be started directly following the generation of the first pair MX1,MY1, and the continued generation of the look-up tables can take place while the machine is in motion. In this way there is no loss of time due to having to await the completion of the look-up tables, and the operation of the machine takes place in real time. In a modification, the law of the velocity functions DVPX,DVPY is characterised by a constant acceleratipn examplified by a flat characteristic ST (Fig. 4b). This results in discontinuous changes in the acceleration diagram and corresponding changes in the forces acting in the machine. In other words, the curve is started by instantaneously applied component forces each of which acts uniformly for the whole of the curve and both of which cease simultaneously. This may be acceptable in certain cases especially if the mechanical system of the machine has good damping properties. As far as the calculation of the curve points are concerned, the algorithms are independent of the velocity function. It will be seen therefore that any acceleration characteristic can be chosen for the velocity functions to produce a desired curve.

Claims: CLAIMS : 1. The method of operating first and second component positioning drives (MX;MY) of a coordinate positioning system to produce a resultant movement describing a curve (DE), comprising determining a resultant start velocity vector (VAB). for the curve, determining a resultant end velocity vector (VBC) for the curve, determining a resultant velocity function [V=f(K,t)j for the curve (DE), and automatically performing the steps of: a) determining a first and a second coordinate component (VlX, V1Y; V2X, 2Y) for each of the start and end velocities (VI; 2) of the respective vectors (VAB; BC), b) determining a first velocity profile (DVPX) between the first components (V1X;V2X) of the start and end velocities (VI; V2) on the basis of said resultant function [V=f(K,t)J, c) determining a corresponding second velocity profile (DVPY) between the second components (V1Y;V2Y) of the start and end velocities (V1;V2), d) generating first and second drive signals (MX1;MY1) respectively representing said first and second velocity profiles (DVPX;DVPY), and e) applying said first and second drive signals (MX1;MY1) respectively to said first and second — 2o- coordinate positioning drives (MXiMY) . 2. The method of operating a machine having two coordinate drives (MX,MY) cooperating to produce a resultant movement of a driven member, comprising: a) determining a first and a second velocity vector (VAB, BC) for movement of the driven member (10) along respective paths (AB,BC) having a common point (B) of the intersection, b) determining in respect of each vector a first and a second component speed, c) determining a curve (DE) joining said paths (ABjBC) and having a start point (D) and an end point (E) , d) movements along said curve (DE) having a velocity profile (DVP), . e) the velocity profile (DVP) having at said start point (D) a first pair of component speeds (V1X,V1Y) the same as those of the first vector (VAB), f) the velocity profile (DVP) having at said end point (E) a second pair of component speeds (V2X.V2Y) the same as those of the second vector (VBC), g) defining a start point (D) and an end point (E) on the respective paths (AB,BC) at which the curve (DE) is joinable thereto, and h) means for actuating said coordinate drives (MX,MY) sequentially in accordance with the component speeds (VlX, VIY; DVPX,DVPY; V2X, V2Y) of the first vector (VAB) of the velocity profile DVP of the curve and of the second vector (VBC). 3. The method according to claim 2 comprising determining a first velocity profile (DVPX or DVPY) between one of the component speeds (VlX or VlY) of said first pair (VlX, VlY) and the corresponding component speed (V2X or V2Y) of said second pair (V2X,V2Y), and determining a corresponding second velocity profile (DVPY or DVPX) being a scaled version of the first velocity profile (DVPX or DVPY). _ 4. The method according to claim 2 or claim 3 comprising: a) determining the time (td,te) between the start and end points (D,E) of the velocity profile (DVP) of the curve in terms of two sequential time periods (VI, VII), b) as a function of said one period (VI), determining a distance (BD), from said common point (B) along the first path (AB) thereby to establish said start point (D), c) correspondingly determining as a function of said second period (VII) a distance (BE) from said common point (B) thereby to establish said end point (E ) . 5. The method according to claim 3 or claim 4 comprising determining said first velocity profile (DVPX or DVPY) on the basis of a uniform rate of change of acceleration (K) . 6. The method according to any one of the claims 3 or 4 or 5 comprising: a) determining said first velocity profile (DVPX or DVPY) in respect of the difference between one (VlX) of the component speeds of one of said pairs (VlX, VlY) and the corresponding component speed (V2X) of the other said pair (V2X,V2Y), whichever is the greater. 7. Coordinate positioning apparatus comprising a first and a second component drive means (MX, Y) adapted (11) to impart to a driven member (10) a resultant movement defined by a curve (DE) adapted to connect two linear paths (AB.BC), a) means (204) for determining first and second component speed values (VlX, VlY; 2X, V2Y) of velocity vectors (VAB, BC) of the respective paths (ABjBC), the apparatus comprising: b) means (103) for establishing the difference (DVX) between the first component speed values (V1X.V2X) of said vectors (VAB, BC), c) means (103) for establishing the difference (DVY) between the second component speed values (V1Y.V2Y) of said vectors (VAB, VBC), d) means (104) for establishing which of said differences (DVX or DVY) is the greater (DVX) and which is the lesser (DVY) , e) means (105) for establishing a first velocity profile (DVPX) between the component speed values (VlX,V2X) having the greater said difference (DVX), f) means for establishing a second velocity profile (DVPY) between the speed values (V1Y,V2Y) having the lesser said difference (DVY), the second velocity profile (DVPY) being a scaled version of the first velocity profile (DVPX), g) means (131,132) for generating drive signals (MX1,MY1) defining said first and second velocity profiles (DVPX, DVPY), and h) means (131,132) for applying the said drive signals (MX1,MY1) to said drive means (MX,MY) thereby to produce a said resultant movement. 8. Apparatus according to claim 7 wherein said first velocity profile (DVPX) is generated by a function generator including: a) means (402) for determining one half (TCURVE) of a time period corresponding to said first velocity profile (DVPX), means (403) for _5 c » ' r determining a number (SNC) of time intervals (T) being fractions of said half time period (TCURVE) , b) means (406) for determining an array (LUTDX), whose size is equal to said half number, of discrete signals (MX1,MY1) corresponding to velocity values which increase progressively at an increasing rate from the value of one of said component speeds (VlX), c) means (407) for determining an array (LUTDX) , whose size is equal to said half number, of signals (MX1,MY1) corresponding to discrete velocity values which increase progressively at a decreasing rate between said higher value and the value of the other of said component speeds (V2X).7 .

Inventors: DARLINGTON ALAN DOUGLAS, WAGGITT KEVIN PAUL, DARLINGTON, ALAN, DOUGLAS, WAGGITT, KEVIN, PAUL
Applicants: RENISHAW PLC
Application year: 1987
Main classification: G05B19
IPC codes: G05B19