Abstract:
A system and method for automatically storing bar coded elements such as containers for electronic components in storage bins such as drawers in a cabinet and for providing access to only the drawer containing a desired element substantially eliminates human error and increases reliability in the handling and processing of these elements and reduces the cost of inventory management and control. The storage and retrieval system includes a bar code reader coupled to a controller which, in turn, is coupled to a plurality of storage cabinets. Each storage cabinet includes a plurality of drawers each coupled to the controller via the combination of an electrical interface and a mechanical drive. Reading of the bar code on an element or on an apparatus into which the elements are deposited for processing or installation into the controller automatically opens a drawer associated with that particular component. Following either deposit of the coded element into the drawer or its removal therefrom, the drawer is manually closed by an operator and remains locked to prevent unauthorized or erroneous access to the contents of the drawer until that code is again read into the controller. Access to a given drawer is prevented so long as any other drawer is open and only that drawer associated with a given coded element is open following reading of the bar code thereon in eliminating the possibility of element handling errors.

Description:
BACKGROUND OF THE INVENTION 
     This invention relates generally to the handling of stored elements or goods and is particularly directed to the automatic storage and retrieval of elements positioned within a secured bin or drawer. 
     Inventory control and management is an important part of any organization involved in the manufacture, distribution, or sale of goods. It is important not only to know the number and types of items in stock, but also to ensure that these items are located in an assigned place from which they may be easily retrieved. Since in most environments the items are at some point handled by a worker, it is desirable to minimize the possibility of human error in the categorizing, storing and retrieval of these items. This is critically important where the items are substantially identical in appearance but are substantially dissimilar and possibly even unrelated in operation and function. 
     One environment where this situation frequently occurs is in the handling of electronic components used in the fabrication of electrical circuits and apparatus where several categories of electronic components may be substantially identical in appearance. Frequently these components are provided with unique identification markings, but these indicia are typically difficult to see much less identify particularly when positioned upon a small object such as the typical electronic component. The intermixing of electronic components of various types or of various electronic components of the same type having a range of operating characteristics or parameters frequently results in inaccurate and unreliable circuit fabrication or may even preclude circuit fabrication unless complicated component handling procedures are strictly followed. The problem becomes even more severe where marginally trained workers handle very large numbers of components such as in the large scale manufacture of consumer-type electronic products. 
     The present invention is intended to provide a solution to the aforementioned problems in the storage and retrieval of stock items such as electronic components wherein the possibility of human error in the handling of these items is essentially eliminated by the automatic, computer controlled accessing of only that storage container or bin uniquely assigned to or associated with a given item. 
     OBJECTS OF THE INVENTION 
     Accordingly, it is an object of the present invention to provide for improved handling of stored goods. 
     It is another object of the present invention to provide for the automatic storage and retrieval of goods in inventory by means of an arrangement and a method which substantially eliminate the possibility of errors in the handling of these goods. 
     Yet another object of the present invention is to provide for the automatic storage in and retrieval from looked drawers of bar coded elements. 
     A further object of the present invention is to provide a computer controlled inventory information and control system. 
     A still further object of the present invention is to provide for improved reliability in the handling of coded bulk containers wherein are stored large numbers of electronic components by substantially reducing the possibility of human error in their storage and retrieval. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The appended claims set forth those novel features which characterize the invention. However, the invention itself, as well as further objects and advantages thereof, will best be understood by reference to the following detailed description of a preferred embodiment taken in conjunction with the accompanying drawings, where like reference characters identify like elements throughout the various figures, in which: 
     FIG. 1 is a simplified schematic and block diagram of an automatic storage and retrieval system in accordance with the present invention: 
     FIG. 2 is a combined schematic and block diagram of an electrical interface arrangement for coupling a controller to a plurality of drawers in several cabinets for use in the automatic storage and retrieval system of FIG. 1; 
     FIG. 3 is a simplified schematic diagram of a mechanical drive arrangement for controlling the position of a drawer in the automatic storage and retrieval system of the present invention; and 
     FIGS. 4 and 5 are flow charts illustrating, in combination the various steps carried out by a controller in the automatic storage and retrieval method of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, there is shown a simplified schematic and block diagram of a storage and retrieval system 10 in accordance with the present invention. 
     The storage and retrieval system 10 operates in combination with a container 12 having a bar code 14 on an outer portion thereof. The container 12 may be virtually of any type such as a bag, a box, a can, or a basket. Positioned within the container 12 are a plurality of items 11 which are stored and retrieved in an organized manner as described in detail below. In one implementation of the present invention, a plurality of electronic components 11 of the same type are stored in a bag 12 for handling in accordance with the present invention. 
     The bar code 14 on an outer portion of the bag 12 is conventional in nature and is comprised of a plurality of aligned, parallel, elongated strips of various widths with various sized spacings interposed therebetween. The widths of these strips, or bars, as well as the inter-bar spacings form a code which uniquely identifies the bag 12 to which it is attached. A scanning beam transmitter/receiver 18, commonly termed a wand, is coupled to a laser bar code scanner 20 and directs a laser beam onto the bar code 14 of the bag 12. The laser beam is reflected from the bar code 14 back to the scanning beam transmitter/receiver 18 in accordance with the arrangement of coded lines 16 in the bar code and provides information to the laser bar code scanner 20 which uniquely identifies the bag 12. The bar code scanner 20 provides the received coded signals to a laser bar code reader 22 which, in turn, is coupled to and provides the coded digital data to a controller 24. The controller 24 is, in turn, coupled to a bar code printer 26 and to a video display 28 as well as a keyboard 30. The video display 28 provides a system operator with a visual indication of various system operating parameters such as the bar code 14 read from the bag 12, the number of elements or components remaining in the storage and retrieval system, the location of various components within the system, and various other inventory-type bookkeeping functions. The controller 24 is also coupled to a keyboard 30 which permits the operator to enter operating data such as in generating new bar codes by means of the bar code printer 26 or in requesting the presentation of system status information on the video display 28. 
     In a preferred embodiment, the controller 24 is a Z-100 computer available from Zenith Data Systems and is in the form of a terminal having integrated therewith the video display 28 and the keyboard 30. Similarly, an Intermec Model 1600 laser bar code scanner, an Intermec Model 9500 laser bar code reader, and an Intermec Model 8620 bar code printer are used in a preferred embodiment of the present invention. 
     The controller 24 includes a plurality of input/output (I/O) ports for coupling the controller by means of bi-directional data lines to a plurality of cabinets. The controller 24 further includes a disk drive system 25 within which is stored an operating program for controlling the operation of the storage and retrieval system 10. The operating program is loaded into the random access memory (RAM) 27 from the disk drives 25 before the operating program is executed from the RAM 27. The controller 24 also includes a random access memory (RAM) 27 for storing the bar codes associated with each container 12 as well as various other operating parameters such as the number and type of each component in each drawer, the number of cabinets in use, the number of drawers in each cabinet, etc. The bar codes and operating parameters are also stored on disk so that they will be available if the power ever becomes interrupted. As shown in FIG. 1, cabinets 32, 40, 42 and 44 are coupled to port 1 of the controller 24, while cabinets 46, 48, 50 and 52 are coupled to port 2 of the controller. Each of the cabinets, as shown specifically for cabinet 32 in FIG. 1, includes an electrical interface 34, a plurality of mechanical drives 36, and a plurality of drawers 38. The electrical interface 34 provides appropriate electrical coupling between the controller 24 and each of the mechanical drives 36. Each of the mechanical drives 36 is responsive to an appropriate control signal received from the electrical interface 34 and is coupled to a respective drawer for controlling the operation thereof as described below. 
     Also in accordance with the present invention, a bar code 17 is positioned upon a hopper 15 which is removably coupled to a component feeder 13. Following retrieval of a component bag 12 from one of the drawers 38 as described in detail below, the electronic components are deposited in the appropriate hopper 15 in accordance with the bar code 17 thereon. The lower portion of the hopper 15 is provided with an aperture 15a therein which allows the electronic components to fall under the influence of gravity into a component feeder 13. The component feeder 13 orients and positions the electronic components 11 for engagement and positioning in an electrical circuit such as upon a circuit board (not shown) in a conventional manner. 
     Referring to FIG. 2, there is shown a simplified oombined schematic and block diagram of an electrical interface 34 for coupling the controller 24 to the mechanical drives 36 associated with each of a plurality of drawers 38 in the cabinet 32. The controller 24 is coupled by means of 8 output lines for providing 8 bit coded words to a buffer circuit 60. The buffer circuit 60 appropriately conditions the output signals from the controller 24 for providing four of the coded bits to a demultiplexer (DEMUX) 62. The demultiplexer 62 converts the four coded bits from the buffer circuit 60 to a 16 bit coded word provided via sixteen lines to three inverters 70, 72 and 74. The four bits provided from the buffer 60 to the demultiplexer 62 represent a drawer code provided to the controller 24 either via the keyboard 30 by an operator or via the aforementioned arrangement of the scanning beam transmitter/receiver 18, the laser bar code scanner 20, and the laser bar code reader 22. The remaining four output lines from the buffer 60 are provided to an address comparator 64 and represent a code which uniquely identifies one of the cabinets within which the drawer which it is desired to access is located. 
     The inverters 70, 72 and 74 invert the coded outputs from the demultiplexer 62 to positive logic and provide these binary signals to a pair of current amplifiers 76 and 78. Each of the current amplifiers 76, 78 is comprised of an array of transistors (not shown) for driving a respective relay (shown in FIG. 3) coupled to each of the drawers 84 through 97. As shown in FIG. 2, each output line from one of the current amplifiers 76, 78 is coupled to and actuates a respective drawer for opening the drawer as described in detail below. 
     In addition to the 4 bit coded cabinet address provided from the buffer circuit 60 to the address comparator 64, a preset address comprised of 4 bits is also provided from a four-element dip switch 66 to the address comparator. Upon closure of one of the switch elements within the dip switch 66, an associated input to the address comparator is pulled low and a manually set coded address input may be provided from the dip switch 66 to the address comparator 64. The address comparator 64 thus compares a manually preset cabinet address with a cabinet address received from the controller 24 and provides an output via inverter 68 to the Chip Select (CS) input pin of the demultiplexer 62 when these two cabinet addresses match. Thus, when the manually preset address provided by the dip switch 66 matches the received cabinet address provided by the controller 24 to the address comparator 64, the demultiplexer 62 provides the 4-to-16 converted drawer addresses to the three inverters 70, 72 and 74. 
     Each of the drawers 84 through 97 is coupled to a status line 82 for providing an indication as to whether a drawer is open or closed. The status line 82 is coupled via an eight element dip switch 80 to the controller 24 for providing drawer status information thereto. Since each of the drawers 84 through 97 is coupled in series to the status line 82, if any of the aforementioned drawers is open, an appropriate signal will be provided via the dip switch 80 to the controller 24. The controller 24 prevents the opening of another drawer while the first drawer remains open. Thus, a drawer may be automatically opened in response to a bar code input provided to the laser bar code scanner 20 only if all other drawers are closed. This prevents the inadvertent deposit or removal of a component bag from an improper drawer. In a preferred embodiment, eight cabinets are used in the storage and retrieval system of the present invention. Thus, the dip switch 80 is provided with eight individual switch elements to provide a manual selection capability in determining in which cabinet there is an open drawer. For example, receipt of a return signal by the controller 24 via the drawer status line 82 with the upper, or first, switch element closed, indicates that a drawer in the first cabinet is open. The inclusion of the manually selectable dip switch 80 in the drawer status signal return line 82 facilitates locating an open drawer in the storage and retrieval system. 
     Referring to FIG. 3, there is shown a simplified schematic diagram of a mechanical drive 36 for automatically latching and unlatching a drawer 84 positioned within the cabinet 32. The mechanical drive assembly 36 includes a relay 102 coupled to the electrical interface 32 via a drawer actuation line 100. In response to a release signal provided from the electrical interface via the drawer actuation line 100 to the relay 102, a solenoid 118 is actuated to release or unlock the drawer 84 permitting it to automatically open so as to project from the cabinet 32 to permit an item to be either deposited in or removed from the drawer. The automatic unlatching feature of the storage and retrieval system of the present invention is provided in the following manner. 
     The mechanical drive assembly 36 includes a generally L-shaped latch 104 positioned on an aft, outer surface of the drawer 84 and maintained thereon by means of a plurality of mounting screws 106. The latch 104 includes an aperture 104a in a distal portion thereof. The aft panel 32a of the cabinet 32 includes a first aperture 32b therein through which the distal portion of the latch 104 extends when the drawer is in the closed position as shown in FIG. 3. 
     Mounted to the aft panel 32a of the cabinet 32 by means of the combination of a mounting screw 114 and a nut 116 is an L-shaped bracket 112 which includes an aperture in the generally horizontally oriented portion thereof. Positioned within this aperture and supported by the L-shaped bracket 112 is a solenoid 118. The solenoid 118 is coupled to the relay 102 by means of a conductor 119 and is actuated by current flow therethrough. A plunger 120 within the solenoid 118 is displaced upward or downward as shown in dotted line form in the figure in accordance with the direction of current flow within the conductor 119. 
     Positioned beneath the L-shaped bracket 112 and also coupled to the aft panel 32a of the cabinet 32 by means of a plurality of mounting screws 110 is a lower bracket 108. The lower bracket 108 includes a generally vertically aligned channel 108a therein within which is positioned the plunger 120 of the solenoid 118. The plunger 120 is free to move upward and downward within the channel 108a  of the lower bracket 108 in response to actuation of the solenoid 118 by the current within the conductor 119. When in the fully lowered position as shown in FIG. 3, the lower end portion of the plunger 120 is positioned within the aperture 104a in the distal portion of the latch 104. With the plunger 120 thus positioned within the aperture 104a in the latch 104, the drawer 84 is latched in the closed position and cannot be opened. Following receipt of a drawer open signal from the electrical interface via the combination of the drawer actuation line 100, the relay 102, and the conductor 119, the plunger 120 in the solenoid 118 is displaced upward such that the plunger is no longer positioned within the aperture 104a in the latch 104. The drawer 84 is then laterally displaced within the cabinet 32 to an open position. The plunger 120 is biased downward by a coil spring 122 positioned between a lower end portion of the solenoid body and an intermediate portion of the plunger so as to maintain the plunger within the aperture 104a in the latch 104 in maintaining the drawer in a locked configuration. A lower portion of the plunger 120 is provided with a beveled edge 120a which is engaged by the distal end of the latch 104 when the drawer 84 is closed for urging the plunger upward to permit the drawer to be locked. A lateral portion of the latch 104 is provided with the combination of a mounting pin 126 and a roller 128 to facilitate relative displacement between the latch and the lower bracket 108 and to maintain alignment between these components of the mechanical drive assembly 36. The roller 128 engages a lower portion of the lower bracket 108 and is rotationally displaced in response to lateral displacement of the drawer 84 to facilitate the opening and closing thereof. 
     The aft panel 32a of the cabinet 32 is further provided with a lower aperture 32c within which is positioned a bushing 144. The bushing 144 is maintained in position on the aft panel 32a of the cabinet 32 by means of a ring 142 positioned therearound. The bushing 144 also includes an aperture therein within which is positioned an elongated, cylindrical push rod 146. A proximal end of the push rod 146 is coupled to an aft portion of the drawer 84 by means of the combination of a flange washer 136 and a coupling screw 138. A distal end portion of the push rod 146 is provided with a pair of nuts 148 threadably mounted thereon. A coiled ejection spring 140 is positioned between the flange washer 136 on the aft portion of the drawer 84 and the inner surface of the aft panel 32a of the cabinet 32. Following release of the latch 104 from the combination of the solenoid 118 and the lower bracket 108 upon removal of the plunger 120 from the aperture 104a in the latch, the ejection spring 140 urges the drawer 84 in a leftward direction to an open position. The nuts 148 positioned on the distal end portion of the push rod 146 limit the leftward displacement of the drawer to an open position by engaging the bushing 144. In closing the drawer 84, the drawer is displaced rightward resulting in the compression of the ejection spring 140 and the displacement of the push rod 146 along the bushing 144 so as to extend outward from the aft panel 32a of the cabinet 32. The distal end of the latch 104 engages the beveled edge 120a of the plunger 120 urging it upward. Further displacement of the combination of the drawer 84 and the latch 104 mounted thereto results in the vertical alignment of the respective apertures 104a and 108a in the latch 104 and the lower bracker 108 permitting the plunger 120 to be displaced downward within the aperture of the latch under the influence of the plunger return spring 122. The drawer is thus securely locked in the closed position. 
     Mounted to an aft portion of the lower bracket 108 by means of a plurality of mounting screws 132 is a microswitch 130. The microswitch 130 includes a contact 134 which is positioned and adapted for engagement by the distal end of the latch 104 upon closure of the drawer 84. The microswitch 130 is coupled to a current source 150. Upon closure of the drawer 84 and engagement of the latch 104 with the contact 134 of the microswitch 130, a signal is provided via the microswitch to the drawer status line 82. As shown in FIG. 2 and as discussed above, the drawer status line 82 is coupled to the controller 24 via the dip switch 80. Each drawer 84 is coupled to the controller 24 via the drawer status line 82 by means of which an indication is provided to the controller that a drawer is open. In response to the receipt of a signal indicating that a drawer is open, the microcomputer 24 is inhibited from providing an open signal as described above to another drawer. In this manner, the simultaneous opening of two drawers is prevented and the deposit of an improper container into a given drawer or the removal of a container from an unintended drawer is avoided. 
     The manner in which the storage and retrieval system 10 of the present invention controls the handling of the component containers 12 will now be described with reference to the flow charts shown in FIGS. 4 and 5 as well as to the previously described system components. This flow chart depicts the programming of the controller 24 in a general way and does not include reference to the common, standard routines executed in a typical microcomputer such as internal data transfer and housekeeping functions. In reference to FIGS. 4 and 5 an oval symbol indicates the start or completion of an operational sequence, a diamond indicates a decision point, and a rectangle indicates the performance of an operation. The details of the entire program for a Z-100 microcomputer used as the controller in a preferred embodiment of the present invention are set forth in Table I which is a listing of the operating program stored in the controller&#39;s disk drive 25. 
     The operating program loaded into the microcomputer controller&#39;s RAM 27 from the disk drive 25 is initiated at step 200 as shown in FIG. 4. The &#34;main program&#34;, as it is hereinafter termed, refers to the primary tasks performed in the storage and retrieval system which are illustrated in steps 200 through 208. The flow charts of FIGS. 4 and 5 includes additional details of each of these primary tasks which are described in detail in the following paragraphs. Upon completion of a primary task, the operation of the controller returns to the main operating program as described below. 
     Following initiation of the storage and retrieval program at step 200, the program at step 201 determines if any user-initiated inputs have been provided via the keyboard 30 coupled to the controller 24, ##SPC1## ##SPC2## 
     Upon detection of inputs from the keyboard at step 201, the program proceeds to step 202 for reading a bar-coded label and opening a corresponding drawer. If at step 202, no bar coded labels have been read into memory by means of the laser bar code scanner 20, the program proceeds to step 203 and determines if new label information has been provided via keyboard 30 to the controller 24. If label data has been entered, the program branches to step 220 and initiates a TERMINAL sub-routine. If new label information has not been entered via keyboard 30, the program branches from step 203 to step 204 to determine if a review of stored part numbers has been requested. If such a request has been made via keyboard 30, the program branches to step 230 and initiates a PART REVIEW sub-routine. If at step 204 it is determined that a PARTS REVIEW has not been requested, the program branches to step 205 for initiating a DIAGNOSTICS sub-routine at step 240 if requested. If the DIAGNOSTICS sub-routine has not been requested, the program branches from step 205 to step 206 and initiates a DATA ENTRY sub-routine at step 250 if a user has entered data via keyboard 30. If no data has been entered, the program branches to step 207 and determines if the INVENTORY sub-routine has been selected and if selected, branches to step 270 and initiates the INVENTORY sub-routine. The INVENTORY sub-routine is the last of the sub-tasks monitored and performed by the storage and retrieval operating program stored within the controller&#39;s disk drive 25, with the program then branching to step 208 to the end of the operating program described above. Steps 200 through 208 represent the main operating program stored in the microcomputer&#39;s disk drive 25. Each of the aforementioned sub-routines is described individually in the following paragraphs. 
     The READ sub-routine represents the storage mode of operation and is initiated at step 210 with the reading of data detected by the laser bar code scanner 20 and provided to the bar code reader 22 into the controller 24. Following reading of the bar coded data into the controller 24 at step 211, the program at step 212 determines if the data is valid by comparing the input data with previously stored data in the controller&#39;s RAM 27. If at step 212 the program determines that an invalid bar code has been detected, the program proceeds to step 213 and initiates the flashing of an &#34;ILLEGAL NUMBER&#34; indication on the video display 28 at step 213 and then branches back to step 211 and awaits entry of valid data. Following detection of valid bar code data by the scanning beam transmitter/receiver 18, the program executes the opening of a drawer corresponding to the entered data at step 214 to allow a container to be either placed in or removed from the drawer. Following detection of closure of the drawer at step 215, the program proceeds to step 216 and either continues (C) to read additional data if entered by branching back to step 211 or returns to the main program (MP) at step 217. 
     If at step 202 a bar code label has not been detected by the laser bar code scanner 20 as determined by the controller 24, the program stored therein branches to step 203 and determines if the PRINT LABEL sub-routine has been selected. If the PRINT LABEL sub-routine has been selected by means of keyboard 30, the program then branches to step 220 and initiates the start of a TERMINAL sub-routine. In the TERMINAL sub-routine the controller functions merely as a terminal in controlling the operation of the video display in response to user initiated inputs provided via the keyboard 30. These user initiated inputs are provided via the controller 24 to another microcomputer (not shown) within the bar code printer 26 for the printing of bar coded labels to be applied to either the aforementioned component bags, the hopper, or the drawers in which the bags are stored. In this mode of operation, the controller 24 therefore operates in a passive manner in merely passing data entered on the keyboard 30 onto the video display 28 and the bar code printer 26. The first step in the TERMINAL sub-routine involves the loading of the terminal program into the controller 24 from the bar code printer 26 at step 221. At step 222 the controller 24 begins executing the terminal program which continues at step 223 until the entire terminal program is executed at which time the controller 24 returns to the main program at step 224. 
     If at step 203, it is determined that the PRINT LABEL sub-routine has not been selected, the program branches to step 204 for a determination of whether the REVIEW PART NUMBERS sub-routine has been selected. If the REVIEW PART NUMBERS sub-routine has been selected at step 204, the program branches to step 230 for initiation of execution of the REVIEW PART NUMBERS sub-routine. The first step in this sub-routine involves the listing of all part numbers in cabinet No. 1 at step 231. Review of the part numbers associated with the next cabinet number, which in this case is cabinet No. 2 and the listing of all part numbers in that cabinet occurs at step 233. This procedure continues in a sequential manner until all of the part numbers in all N cabinets have been reviewed at step 234, with the part numbers in the Nth cabinet displayed at step 235, whereupon the program returns to the main operating program at step 236. If at any point the user does not desire to review the part numbers associated with the next cabinet, the program branches to step 236 for return to the main operating program. 
     If at step 204, it is determined that the REVIEW PART NUMBERS sub-routine has not been selected, the program branches to step 205 for a determination of whether the DIAGNOSTICS sub-routine has been selected. If the DIAGNOSTICS sub-routine has been selected as determined at step 205, the program branches to step 240 and initiates the start of the DIAGNOSTICS sub-routine. The DIAGNOSTICS sub-routine executes a check for the proper operation of the electrical interface as well as the mechanical drive of each drawer. The first step in the DIAGNOSTICS sub-routine involves the determination at step 241 of whether the drawer (D) or cabinet (C) DIAGNOSTICS sub-routine has been selected. If the cabinet DIAGNOSTICS sub-routine has been selected, the program branches from step 241 to step 246 and the controller 24 provides appropriate signals to each of the drawers in every cabinet via an associated combination of an electrical interface and mechanical drive for effecting the opening thereof. Each drawer must be manually closed before the next drawer can be tested. After proper operation of all the drawers has been validated in step 246, the program proceeds to a return to the main operating program at step 247. If at step 241 it is determined that the drawer DIAGNOSTICS sub-routine has been selected, the program branches to step 242 and awaits input of the designated drawer number and cabinet number to be tested. Involved in the testing of the proper operation of a given drawer is the determination at step 243 of the validity of the drawer number selected. If a selected drawer number is not valid as determined at step 243, the program branches back to step 242 and awaits the input of valid drawer and cabinet numbers. If at step 243 it is determined that valid drawer and cabinet numbers have been entered in designating a given drawer to be tested, the program proceeds to step 244 and opens the drawer associated with the valid entered drawer number. The program then proceeds to step 245 and determines if another set of drawer and cabinet numbers have been entered for testing the operation thereof and if entered, branches back to step 242 and continues operation as described. If at step 245 it is determined that additional drawer and cabinet numbers have not been entered for testing, the program proceeds to step 247 and executes a return to the main operating program. 
     If at step 205, it is determined that the DIAGNOSTICS sub-routine has not been selected, the program branches to step 206 and determines whether the DATA ENTRY sub-routine has been selected and if so, branches to step 250 for initiation of the DATA ENTRY sub-routine. The DATA ENTRY sub-routine involves the initial entry or updating of bar coded data stored in the controller&#39;s RAM 27 and disk drive 25. If data is to be updated, the program branches at step 251 to step 256 for entry of the drawer number and cabinet number for which the part number information is to be updated. The program then proceeds to step 257 to await entry of a new part number. The program then executes a loop back to step 256 until the part number associated with the drawer number and cabinet number entered at step 256 is changed. Following an updating of the part number associated with the aforementioned drawer and cabinet numbers, the program proceeds to step 258 for entry of a new part number. The program then proceeds to step 259 and awaits entry of additional drawer and cabinet number information as well as an updating of the part number associated therewith. Following entry of all updated part number information, the program proceeds to step 260 and executes a return to the main operating program. 
     If at step 251 it is determined that initial part number information is to be entered and stored in the controller 24, the program branches to step 252 and prints out each pair of cabinet and drawer numbers and awaits entry of a part number associated therewith at step 252. Following completion of the entry of all of the initial part numbers for storage in the controller&#39;s RAM 27 as determined at step 253, the program branches to step 254 and executes a review with display of all of the cabinet and drawer numbers and part numbers associated therewith. Review of the initially entered part numbers is accomplished by branching to the REVIEW sub-routine at step 255 whereupon the REVIEW sub-routine is initiated at step 230 as previously described. If it is not desired to review all of the initially entered part numbers, the program branches from step 254 to step 260 and executes a return to the main operating program. 
     If at step 206 it is determined that data is not to be entered, the program branches to step 207 and determines whether the INVENTORY sub-routine has been selected. If at step 207 it is determined that the INVENTORY sub-routine has not been selected, the program branches to the end of the operating program at step 208. 
     If at step 207 it is determined that the INVENTORY sub-routine has been selected, the program branches to step 270 for initiating the start of the INVENTORY sub-routine. The INVENTORY sub-routine is initiated upon the entry of user-initiated inputs to the keyboard 30 as determined by the controller 24 under the control of the INVENTORY sub-routine at step 271. Following initial entry of inputs on the keyboard at step 271, the INVENTORY sub-routine then proceeds through a series of steps for determining what inventory commands have been input by a system user or operator. In sequencing through these steps, if it is determined that user inputs corresponding to one of these steps have been provided to the controller 24, the operating program branches back to step 271 and awaits entry of additional user-initiated input information relating to the designated step. For example, if at step 272 it is determined that the user would like to initialize a file, the program branches back to step 271 and awaits file initialization data to be input via keyboard 30. Similarly, if it is determined at step 273 that the user would like to create a new entry, the program returns to step 271 and awaits the input of the designation of the new entry. If it is determined at step 274 that the user desires to display the inventory for a given part number, the program returns to step 271 and awaits entry of the part number for which the inventory is desired to be displayed. If at steps 275 and 276 it is respectively desired to add or subtract from the number of a given part number in stock, the program branches back to step 271 and awaits entry of either the number to be added or the number to be subtracted from the number of parts having a given part number which is currently stored in the controller 24. Finally, if at step 277 it is determined the user has provided an input to the controller 24 requesting the listing of the current inventory for a given part number, the program returns to step 271 awaiting entry of the part number for which the current inventory is desired whereupon this number is read from the controller&#39;s RAM 27 and provided from the controller 24 to the video display 28 for presentation thereon. 
     There has thus been shown a system and method for automatically storing bar coded elements in locked storage bins such as drawers in a cabinet and for automatically retrieving these elements when desired under the control of a microcomputer wherein the possibility of erroneous storage and retrieval of these elements is substantially eliminated. The present invention automatically opens a drawer associated with a given bar code read from the element to be stored and prevents the opening of any other drawer until the drawer associated with that element has been closed. The bar code may be provided on an element handling and processing mechanism and read therefrom for opening and providing access to a drawer containing only those elements associated with that particular mechanism. In this manner erroneous or inadvertent storage and retrieval of the elements within the various drawers or containers is prevented. 
     While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that changes and modifications may be made without departing from the invention in its broader aspects. For example, while the present invention has been described primarily in terms of the storage and retrieval of electronic component-bearing containers such as bags, it is not limited to this environment but has application to the storage and retrieval of virtually any bar coded elements. Therefore, the aim in the appended claims is to cover all such changes and modifications as fall within the true spirit and scope of the invention. The matter set forth in the foregoing description and accompanying drawings is offered by way of illustration only and not as a limitation. The actual scope of the invention is intended to be defined in the following claims when viewed in their proper perspective based on the prior art.