Abstract:
An X-Y plotter is provided having an automatic pen changer comprising a pen repository, a memory for storing data identifying a pen selected by a user, a plot head for automatically fetching pens from and depositing pens into the repository, a processing means having a routine stored in a read-only-memory for providing head-movement coordinates, and a control means for moving the head to said coordinates, the pen-changing action (fetching and depositing) being performed solely by movement of the head to said coordinates. Deposited pens are automatically capped to prevent drying-out, fetched pens are automatically uncapped prior to use.

Description:
BACKGROUND AND SUMMARY OF THE INVENTION 
     Present pen-changing mechanisms generally employ a device such as a turret for performing pen changing operations. Generally, the turret is rotated to permit the fetching and depositing of the pens. To perform the rotation, a motor, solenoid or other similar rotational device is usually employed. However, inclusion of such rotational devices in a plotter or other apparatus adds undesirable weight, mass and inertia to such apparatus. Also, the pens in the turret often tend to dry out as a result of exposure to air. What is needed and desirable, therefore, is an apparatus that performs pen changing without the need for special pen-changing motors, solenoids, turrets and the like, and that prevents drying of the writing tips of the pens. 
     Thus, according to the illustrated preferred embodiment of the present invention, an automatic pen-changing apparatus is provided, in an X-Y plotter system, which utilizes the motors that drive the head (i.e., the motors that ordinarily move the head to position coordinates) to also perform pen-changing operations and to uncap and cap the pens before and after use, respectively. This obviates the need for turrets and the like and for pen-changing motors or solenoids for operating the turrets. 
     The apparatus includes a plot head capable of fetching, holding and depositing a pen, a pen repository having stations for storing, capping and uncapping pens and for detecting the status (&#34;unoccupied&#34; or &#34;occupied&#34; by one or more pens) of the plot head and of the stations, a memory for storing user-supplied pen-identifying data, a processing means for providing position coordinates corresponding to an unoccupied station and to the station identified by the user-supplied data, and a control means for moving the plot head to the position coordinates, the movement to said coordinates causing the plot head to deposit its pen into the unoccupied station and to fetch a pen from the station corresponding to the user-supplied data. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a diagrammatic illustration of the plotter of the present invention. 
     FIG. 2 is a block diagram showing operative elements of the plotter of FIG. 1. 
     FIG. 3 is an auxiliary view of the plot head and selected stations of the plotter of FIG. 1. 
     FIG. 4 is an auxiliary view of selected portions of the plot head of FIG. 3. 
     FIGS. 5A-B are diagrammatic illustrations of patterns of movements of the plot head of FIG. 3 in performing pen-fetching and pen-depositing operations, respectively. 
     FIGS. 6A-C are diagrammatic illustrations of engagement of the plot head with a station of FIG. 3, in fetching a pen from the station. 
     FIGS. 7A-C are diagrammatic illustrations of engagement of the plot head with a station of FIG. 3, in depositing a pen into the station. 
     FIGS. 8A and 8B are logic flow diagrams of a routine stored in the plotter of FIG. 2 for generating position coordinates to which the plot head is moved. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 shows an X-Y plotter system 11 of the present invention. FIG. 2 shows the elements of this system in block diagram form. The system 11 includes a read-write memory (RWM) 13, a stable or repository 25 with four stations (slots) 27, 29, 31, 33 located adjacent to the plotting surface for storing pens therein, each station being equipped with sensors for detecting its status (unoccupied or occupied), and a keyboard 35 with four keys 37, 39, 41, 43 for manual entry of data into the system. Data may also be entered automatically from a calculator or similar device interfaced to the system. The entered data identifies a station in the repository 25, permitting the selection or fetching of the pen in that station for use in producing a plot. The pen-storage stations 27, 29, 31, 33 each contain one pen with ink of a desired color; selection of different stations, therefore, permits the plotting of data in selected colors. Also included in system 11 is a processor 17, a read-only-memory (ROM) 19 with a routine stored therein, a pen-detector station 45, a plot head 23 and a controller 21 for controlling the movement of plot head 23. FIG. 3 shows plot head 23 and stations 27 and 29 in greater detail. FIG. 4 shows a hinged, spring-loaded pen-holding portion 47 and ramp portion 49 of plot head 23. 
     In fetching a pen from a selected station, plot head 23 is first moved from the position it occupies, for example, from an initial position represented by coordinate pairs (X 0 , Y 0 ), to a position (X 1 , Y 1 ) in front of the selected station. From position (X 1 , Y 1 ), the head 23 is then moved to position (X 4 , Y 4 ) in a U-shaped pattern as shown in FIG. 5A for fetching a pen from the selected station. 
     To fetch a pen from station 27, (FIG. 3), e.g., plot head 23 is moved into the station from position (X 1 , Y 1 ) to position (X 2 , Y 2 ) as shown in FIGS. 5A and 6A, with the ramp portion 49 of plot head 23 engaging lever 55 and depressing the lever. Since lever 55 is connected to a pen cap 65 as shown in FIG. 6A, depression of lever 55 causes the pen cap 65 to be moved down and away from pen 53 which is held stationary in the station by holders 67 and 69. Depression of lever 55 therefore causes pen 53 in station 27 to become uncapped. As shown in FIG. 5A, plot head 23 is then moved laterally from position (X 2 , Y 2 ) to position (X 3 , Y 3 ) within the station. As shown in FIG. 6B, this lateral movement causes the spring-loaded pen-holding portion 47 to come into contact with the pen 53 and to contiguously advance around said pen 53, thereby partially encircling and holding the pen 53. After encircling and holding the pen, head 23 is moved from position (X 3  , Y 3 ) to position (X 4 , Y 4 ), withdrawing the the pen from the station. This pen-withdrawal movement causes spring-loaded pen holders 67, 69 to move (in opposition to its own spring tension) from the path of the withdrawn pen as shown in FIG. 6C, thereby causing station 27 to release the pen 53. The movement of head 23 from position (X 3 , Y 3 ) to position (X 4 , Y 4 ) also permits ramp 49 to become disengaged from lever 55 thereby causing lever 55 and cap 65 to return to its original position. From position (X 4 , Y 4 ), head 23 is moved to its original position (X 0 , Y 0 ). 
     Often, to change a pen held by plot head 23, it becomes necessary for the head 23 to deposit the pen into an available (unoccupied) station before fetching another pen from a selected station. In depositing a pen into an available station, plot head 23 is moved from a current position (X 0 , Y 0 ) to a position (X 4 , Y 4 ) in front of the available station. From position (X 4 , Y 4 ), head 23 is then moved to position (X 1 , Y 1 ) in a U-shaped pattern as shown in FIG. 5B (the depositing operation being essentially a reverse of the fetching operation). In moving from position (X 4 , Y 4 ) to position (X 3 , Y 3 ) to deposit a pen into the available station, for example to deposit pen 59 into station 29 as shown in FIG. 3, the ramp portion 49 of plot head 23 engages lever 55 and depresses the lever causing pen cap 71, FIG. 7A to be moved down in preparation for deposit (insertion) of pen 59 into the station 29. Deposit of pen 59 into the station is accomplished by movement of the pen 59 past pen holders 73, 75. As the pen 59 travels from position (X 4 , Y 4 ) to position (X 3 , Y 3 ) within the station 29, it comes into contact with the holders 73, 75 and is moved contiguously past them; this causes the holders 73, 75, which are spring-loaded, to first recede from the path of the pen 59 then snap back, partially encircling the pen 59 and holding it in place in the station 29. From position (X 3 , Y 3 ), as shown in FIG. 5B, plot head 23 is then moved laterally to position (X 2 , Y 2 ). This lateral movement causes the spring-loaded pen-holding portion 47 to move contiguously around and away from pen 59, thereby releasing the pen 59 as shown in FIG. 7B. From position (X 2 , Y 2 ), the head 23 is then moved to position (X 1 , Y 1 ), causing ramp 49 to become disengaged from lever 57 and cap 77 to return to its original position, thereby capping the pen 59. After pen 59 has been capped, plot head 23 is then moved from position (X 1 , Y 1 ) to its initial position (X 0 , Y 0 ), thereby completing the deposit operation. 
     Referring now to FIG. 2, data may be entered into read-write memory (RWM) 13 of the system 11 from a data apparatus such as a calculator or from keyboard 35. Data entered from a calculator may be of the form &#34;SPn&#34;, wherein &#34;SP&#34; represents a &#34;select-pen&#34; command and &#34;n&#34; represents an integer 1-4 identifying the station containing the pen to be fetched (selected), or an integer 0 indicating that no pen is to be fetched, but that the pen, if any, contained in plot head 23 is to be deposited into an unoccupied station. Alternatively, when keys 37, 39, 41, 43 of keyboard 35 are pressed, a digital signal value &#34;n&#34; is entered into RWM 13 identifying one of the pen-storage stations 27, 29, 31, 33, respectively, as the station containing the pen to be fetched. This data or command entered into RWM 13 is then processed by processor 17, under control of the routine stored in ROM 19, to produce position coordinates to which controller 21 moves plot head 23 in order to fetch the pen from station n. Prior to the fetching action, if a pen-storage station is unoccupied, the processor 17 causes controller 21 to deposit the pen contained in the head into the unoccupied station prior to fetching the pen contained in station n. These depositing and fetching operations, which are performed under control of the routine stored in ROM 19, are described below and shown in flow chart (logic flow diagram) form in FIGS. 8A and 8B. A list of the instructions of which the routine is comprised is shown in Table 1 following. The routine is entered, starting at block 81, each time data or command is entered into RWM 13. 
     At block 81, the integer n representing a selected station is stored in RWM 13, after which, the present or current position (X 0 , Y 0 ) of plot head 23 is stored in RWM 13, as indicated by block 83. From block 83, control is transferred to block 85 where a test is made, utilizing sensors contained in pen-storage stations 27, 29, 31, 33, to determine if all four of the pen-storage stations 27, 29, 31, 33 are full (each occupied by a pen). If all four stations are full, control is transferred from block 85 to block 87 where a further test is made to determine if the data &#34;n&#34; entered into RWM 13 is zero or non-zero. If n is found to be zero, no fetch operation is performed; in which case, an exit is made from the routine because no deposit can be performed either, since all the stations are full (as was determined at block 85). If all four stations are not full (i.e., at least one station is unoccupied), control is transferred from block 85 to block 89 where another test is made to determine if n is zero or non-zero. As block 89 shows, if &#34;n&#34; is non-zero, this indicates that a pen is to be fetched from station n, and control is transferred to block 91; if, however, n is zero, this indicates that no pen is to be fetched, and that the pen in plot head 23 is to be deposited into an available station, in which case control is transferred to block 93. 
     
                                           Table 1__________________________________________________________________________ROMSe-  Ad-  Object     Programquencedress     Code       Instruc-No.  (Octal)     (Octal)          Label tion         Remarks__________________________________________________________________________1975**INSTR TO SELECT PEN                SP,P1977*1978 44131     SP    EQU *1979 44131     004226     LDB O01980 44132     001445     LDA EORFG1981 44133     072006     RZA SPFP1982 44134     004172     LDB O1       PASSN1983 44135     040402     JSM ONEGT    GET PEN #1984 44136     172466     SAM GOER3    ERROR IF &lt;01985 44137     020222     ADA N51986 44140     172064     SAP GOER3    ERROR IF &gt;41987*1988 44141     035570          SPFP  STB PENNU    SAVE PEN #1989 44142     040513     JSM WT4SV1990 44143     001406     LDA XPRES    SAVE1991 44144     031565     STA SAVEX    CURRENT1992 44145     001407     LDA YPRES    SERVO1993 44146     061666     STA SAVEY    POSITION1994 44147     001602     LDA OTWD     &amp; PEN1995 44150     031567     STA SAVEP    VALUES1996*1997 44151     000016     LDA STABL    GET CURRENT1998 44152     170400     AAR 1        STABLE1999 44153     050231     AND 017      STATUS2000 44154     010231     CPA 017      FULL HOUSE?2001 44155     067227     JMP FULL     YES2002 44156     076403     SZB STALL    IF 0 PUT PEN INTO STABLE2003 44157     043267     JSM SPSUB    TEST STALL STATUS2004 44160     072450     SZA GOIDL    NO PEN - IGNORE2005*2006 44161     005554          STALL LDB CURPN    GET CURRENT PEN: 1,2,3,42007 44162     043267     JSM SPSUB    TEST STALL STATUS2008 44163     372003     RZA LOW      NO - GO FIND LOWEST EMPTY2009 44164     005654     LDB CURPN    YES - PUT PEN2010 44165     067173     JMP PUT      BACK THERE2011*2012 44166     004226          LOW   LDB O0       RETURN2013 44167     000015     LDA STABL    PEN TO2014 44170     024172     ADB 01       LOWEST2015 44171     170400     AAR 1        EMPTY2016 44172     073476     RLA *-2      STALL2017*2018 44173     027323          PUT   ADB ADXLP    8 HAS STALL #2019 44174     100001     LDA B,I2020 44175     043277     JSM FOOLY2021 44176     001012     LDA PXREL022  44177     004226     LDB O02023 44200     177601     SEC *+1,S2024 44201     043255     JSM MOSEY2025 44202     043312     JSM FIXY02026 44203     005670          GET   LDB PENNU    PUT PEN ONLY?2027 44204     076421     SZB DONE     IF YES MOVE SERVO BACK2028*2029 44205     027623     ADB ADXLP    B HAS STALL #2030 44206     100001     LDA B,I2031 44207     021012     ADA PXREL2032 44210     043277     JSM FOOLY2033 44211     001012     LDA PXREL2034 44212     170040     TCA2035 44213     004226     LDB O02036 44214     17/301     SEC *+1,S2037 44215     043255     JSM MOSEY2038 44216     043312     JSM FIXY02039 44217     040513     JSM WT4SV2040 44220     005570     LDB PENNU    UPDATE2041 44221     035554     STB CURPN    CURRENT PEN2042 44222     043267     JSM SPSUB    TEST STALL STATUS2043 44223     072402     SZA *+2      SELECTED STALL EMPTY?2044 44224     154336     JMP POWAD,I  (NO - FATAL PICK FAILURE!!!)2045 44225     043241          DONE  JSM FIXUP    RETURN TO STATUS QUO2046 44226     064370     JMP IDLE2047*2048 44227     076477          FULL  SZB *-1      IF PUT ONLY IGNORE2049 44230     001000     LDA XMAX     MOVE SERVO2050 44231     043277     JSM FOOLY    TO SENSOR2051 44232     040513     JSM WT4SV2052 44233     000016     LDA STABL    LOOK AT SWITCH2053 44234     031575     STA CRIMP    SAVE IT2054 44235     043312     JSM FIXY02055 44236     001575     LDA CRIMP2056 44237     073466     RLA DONE     PEN IN ARM?2057 44240     067203     JMP GET      NO - SO GET ONE2058*2059 44241     FIXUP EQU *2060 44241     001565     LDA SAVEX    RETURN TO2061 44242     005566     LDB SAVEY    POSITION BEFORE2062 44243     177201     SEC *+1,C    PEN2063 44244     043255     JSM MOSEY    SELECT2064 44245     001567     LDA SAVEP    RESET2065 44246     020172     ADA 01       PEN2066 44247     050172     AND 01       UP2067 44250     031510     STA WDPCT    OR2068 44251     140315     JSM MOVEP,I  DOWN2069 44252     000226     LDA O0       RESET MODE2070 44253     031511     STA WDMOD    TO ABSOLUTE2071 44254     170201     RET 12072*2073 44255     MOSEY EQU *2074 44255     031506     STA WORDX    X MOVE2075 44256     035507     STB WORDY    Y MOVE2076 44257     000226     LDA 002077 44260     177002     SEC *+2      SET2078 44261     000172     LDA 012079 44262     031511     STA WDMOD    MODE2080 44263     004172     LDB 01       PEN2081 44264     035510     STB WDPCT    UP2082 44265     140314     JSM ADSET,1  GO MOVE HARDWARE2083 44266     170201     RET 12084*2085 44267     SPSUB EQU *2086 44267     000016     LDA STABL    GET CURRENT STABLE STATUS2087 44270     170400     AAR 12088 44271     014252     CPB 04       COMPARE2089 44272     004227     LDB 010      IT WITH2090 44273     014174     CPB 03       SELECTED2091 44274     004252     LDB 04       STALL2092 44275     050001     AND B        MASK2093 44276     170201     RET 12094*2095 44277     FOOLY EQU *2096 44277     004226     LDB 002097 44300     177201     SEC *+1, C2098 44301     043255     JSM MOSEY2099 44302     040513     JSM WT4SV2100 44303     005013     LDB PYREL2101 44304     035407     STB YPRES2102 44305     174040     TCB2103 44306     035564     STB PICK2104 44307     177301     SEC *+1,S2105 44310     043255     JSM MOSEY2106 44311     170201     RET 12107*2108 44312     FIXY0 EQU *2109 44312     000226     LDA OO2110 44313     005013     LDB PYREL2111 44314     177301     SEC *+1,S2112 44315     043255     JSM MOSEY2113 44316     005543     LDB SSTAT2114 44317     076077     RZB *-12115 44320     035564     STB PICK2116 44321     035407     STB YPRES2117 44322     170201     RET 12118*2120 44323     077013          ADXLP DEF XLPEN-16396*6397 77012     001054          PXREL DEC 556      STABLE RELATIVE X TRAVEL6398 77013     001710          PYREL DEC 968      STABLE RELATIVE Y TRAVEL6399*6400 77014     023374          XLPEN DEC 9980     X POSITION OF FOUR STALLS6401 77015     026474     DEC 115806402 77016     031574     DEC 131806403 77017     034674     DEC 147806404*6405 77020     000200          DTP   OCT 200      .5% TICK SIZE6406 77021     002000          DLONG OCT 2000     4% DASH LINE LENGTH6407*6408 77022     000337          DEMSK DEC 223      DEFAULT ERROR MASK6409 77023     000000          DPMSK DEC 0        DEFAULT PARALLEL POLE MASK6410 77024     000000          DSMSK DEC 0        DEFAULT SERIAL POLE MASK6411*6412 77025     177754          UP2DN DEC -20      INTER-MOVE DELAY IF PEN UP TO DOWN6413 77026     177766          DN2UP DEC -10      INTER-MOVE DELAY IF PEN DOWN TO UP6414 77027     177766          DN2DN DEC -10      INTER-MOVE DELAY IF PEN STAYS__________________________________________________________________________                             DOWN 
    
     At block 91, a test is made to determine if the selected station, n, does in fact contain a pen. If station n does not contain a pen, then no pen can be fetched from the selected station, and an exit is made from the routine thereby causing the fetching operation to be ignored. If, on the other hand, station &#34;n&#34; does contain a pen, control is transferred to block 93. 
     At block 93, a test is made to determine the availability of the station from which the pen held by plot head 23 was fetched (the identity of this station is stored in RWM 13 at the time a pen is fetched from the station, as shown by block 81 described hereinbefore); if this station is not available (i.e., is not empty but occupied by another pen) for receiving a pen from plot head 23, control is transferred to block 95, otherwise, if this station is available (unoccupied) and can receive a pen from plot head 23, control is transferred to block 97. At block 95, each of the remaining stations are successively checked (for example, from lowest to highest order, in the sequence: first, second, third, fourth) to determine one that may be unoccupied. After an unoccupied station is found (sensed), control is transferred to block 97. At block 97, the position coordinates (X 4 , Y 4 ) for commencing the depositing operation are accessed from a series of four position coordinate values stored in ROM 19. These position coordinate values for commencing depositing operations with respect to the four stations 27, 29, 31, 33 shown in FIG. 2, are listed in Table 2 below. For example, the coordinates (X 4 , Y 4 ) to which plot head 23 must be moved when starting to deposit a pen into station 31 (the third station shown in FIG. 2) would be (13180,0). These coordinates correspond to those of the third station listed in Table 2. 
     
                       Table 2______________________________________Position Coordinates for Depositing a PenStation        X.sub.4     Y.sub.4______________________________________1               9980       02              11580       03              13180       04              14780       0______________________________________ 
    
     
                       Table 3______________________________________Position Coordinates for Fetching a PenSelectedStation        X.sub.1     Y.sub.1______________________________________1              10536       02              12136       03              13736       04              15336       0______________________________________ 
    
     Following the operation at block 97, control is then transferred to block 99. As block 99 shows, these coordinates (X 4 , Y 4 ) are then output or applied to controller 21 (FIG. 2) which moves plot head 23 to the desired coordinates (X 4 , Y 4 ). (A controller or motor unit of this type is described, for example, in patent application entitled &#34;Open-Loop Electric Drive With Corrective Controller&#34;, Ser. No. 756,679, filed Jan. 4, 1977 by Marvin LeRoy Patterson, Robert Dale Haselby and Albert Prall Kendig.) Thereafter, as FIG. 5B and blocks 101 and 103 of FIG. 8A show, the Y-coordinate value is adjusted and the X-coordinate value is unadjusted to produce the position coordinate pair (13180,-968) which are applied to controller 21 (FIG. 2) as position coordinates (X 3 , Y 3 ). In a similar manner, as shown by blocks 105(FIG. 8A) and 109(FIG. 8B), the (X 2 , Y 2 ) and (X 1 , Y 1 ) position coordinate values are calculated to be (13736,-968) and (13736,0), respectively. These position coordinate values are then applied to controller 21 (FIG. 2), as shown by blocks 107 and 109, which moves plot head 23 to the desired coordinates. This U-shaped movement of plot head 23 to the position coordinates, as shown in FIG. 5B, causes the pen contained in plot head 23 to be deposited into station 31, station 31 being the first station found to be unoccupied. 
     Subsequent to the above pen-depositing operation, control is transferred from block 111 to block 113 where a test is made to determine if a pen is to be fetched from a station. At block 113, if it is determined that the data value &#34;n&#34; entered into RWM 13 (FIG. 2) is zero, indicating that no pen is to be fetched, then control is transferred to block 131. If, however, the data value &#34;n&#34; is found to be non-zero, indicating that a pen is to be fetched from station n, control is transferred to block 115. At block 115, the data value n is used as an address to access a position-coordinate value from the series of four position-coordinate values stored in ROM 19 (represented as Table 2 herein) and to calculate therefrom a position coordinate pair (X,Y) for commencing fetching operations. Position coordinate pairs that are calculated for commencing fetching operations with respect to the four stations 27, 29, 31, 33 are listed in Table 3. For example, if the value of n is two, indicating that the pen in the second station 29 is to be fetched, the coordinates (12136,0) shown in Table 3, representing (X 1  Y 1 ) in FIG. 5A, would be calculated and applied to controller 21 (FIG. 2), as shown by block 117. Thereafter, as FIG. 5A and blocks 119 and 121 show, the Y-coordinate value is adjusted and the X-coordinate value is unadjusted to produce the position coordinate pair, (12136,-968) which are applied to controller 21 as position coordinates (X 2 , Y 2 ). In a similar manner, as shown by blocks 123 and 127, the (X 3 , Y 3 ) and (X 4  , Y 4 ) position-coordinate values are calculated to be (11580,-968) and (11580,0), respectively. These position-coordinate values are then applied to controller 21 as indicated by blocks 125 and 129. Controller 21 moves plot head 23 to the desired coordinates in the U-shaped manner shown in FIG. 5A, thereby fetching from station 29 (representing selected station n) the pen contained in the station. 
     Following the operation performed at block 129, plot head 23 is returned to its original position (X 0 , Y 0 ) as shown by block 131; this original position cooresponds to the position coordinate values previously stored in RWM 13 as indicated by block 83. 
     In the event all stations are occupied (full) and the data value &#34;n&#34; stored in RWM 13 is found to be non-zero indicating that a pen is to be fetched from station n, as shown by block 87, control is transferred to block 133. At block 133, processor 17 (FIG. 2) applies the position coordinates of pen-detector station 45 to controller 21, causing the controller 21 to move plot head 23 to the pen-detector station 45. At station 45, a sensor in the station is used as shown by block 135 to test if plot head 23 contains a pen. If plot head 23 is found not to contain a pen, then control is transferred to block 113 preparatory to moving the head to perform a fetch operation. If plot head 23 is found to contain a pen and there is no available station to receive the pen (as indicated by block 85), the head 23 is returned to its original position (X 0 , Y 0 ) as shown by block 131. From block 131, exit is made from the routine. 
     The status of the plot head 23 is also checked at the time of commencement of use of the system 11 (i.e., at initialization or &#34;power turn-on&#34; time) by movement of the head 23 to pen-detector station 45.