Automated merchandise dispensing and retrieval system
DESCRIPTION 
     1. Technical Field 
     This invention relates to the field of vending machines and more particularly to a vending machine network which automatically manages inventory, monitors system reliability, and which collects customer payments and transmits them to a central location. 
     2. Background of the Invention 
     Vending machines have been used in the past for dispensing food items as well as many other articles. Typically, vending machines are operated autonomously, wherein inventory for each machine is typically maintained individually. Typically, each machine in the system must be manually restocked and maintained, wherein a failed vending machine may not be discovered until actually visited by service personnel. Furthermore, since no mechanism exists for automatically determining which items are the most popular, the use of prior vending machines is typically inefficient, since the most popular items may be out of stock well before the typical restocking interval. 
     Recently, with the rapid expansion of home video technologies, the rental of items such as videotapes, videodisks and video game cartridges has become widespread. It has been found that vending machines are useful for dispensing these types of articles. However, present vending machine systems have several significant problems. 
     In the video rental industry, a videotape, cartridge or disk is typically issued to a customer for a predetermined rental period. It is often desirable to determine which videotapes, disks, etc., are rented the most frequently so that inventory stocks may be adjusted accordingly. Furthermore, customers may often wish to return a rented item to a location other than the original rental location. 
     No system is known which allows a number of vending machines, operating in diverse locations, to be used for dispensing and retrieving articles while allowing an article acquired from one vending machine to be returned to another in the system, while automatically tracking the location of each inventory item in the system, and simultaneously accumulating statistics as to the frequency of rental for specific items. Furthermore, no vending machine system is known which allows system reliability statistics to be automatically reported to a central location wherein vending machines having mechanical problems may be identified and repaired prior to total failure. 
     SUMMARY OF THE INVENTION 
     Accordingly, it is an object of the present invention to provide an improved vending machine system which provides automatic inventory tracking. 
     It is another object of the present invention to provide an improved vending machine system which automatically tracks and reports reliability statistics for each vending machine in the system. 
     It is still another object of the present invention to provide centralized billing in a vending machine system. 
     In accordance with an embodiment of the present invention, a self-contained, automated vending apparatus is provided, having a carousel oriented on a vertical plane for rotation along a horizontal axis for storing and dispensing articles, including the means for no-fault positioning of the carousel, ensuring reliable article dispensing and return operations, and further providing for the return of such articles to one of a plurality of randomly selected and circumferentially spaced compartments arranged within at least one concentric ring circumscribing the carousel axis. Furthermore, the carousel apparatus coupled with the carousel driving apparatus comprises the sole moving mechanical component within the overall vending apparatus, thereby enhancing reliability of operations. The present invention also includes the means to link a plurality of vending apparatuses within an electronic data communications network, providing a means for data transmission between each vending apparatus and a remotely and centrally located processing apparatus for the provision of management information to such processing apparatus, based on individual or aggregate vending apparatuses connected to the networking system, such that information can include, for example, performance data on articles, error and service reports, and inventory data whereby the following capabilities are provided: (i) an article, typically a videocassette movie for rental, is dispensed from one vending apparatus and can be returned to another vending apparatus within the network, and (ii) a patron informed that a particular article selection is not then available from the present vending apparatus can be informed of the availability of the same article from another vending apparatus linked within the network. 
     The present invention additionally includes various publicly available, &#34;off-the-shelf&#34; components, providing for easy maintenance and reduced technological risk, because such components are in a mature developmental state, i.e., proven from a functional and performance standpoint, easily and economically available, and fully supported in respect to documentation and a wide array of software or hardware, as the case may be, which can be used in connection with such respective components. No other vending apparatus presently available, in particular videocassette vending apparatuses, is so configured and designed around such widely available components. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The above and other objects may be fully understood through the detailed description of the invention below and the accompanying drawings in which: 
     FIG. 1 is a block diagram of the automated vending machine network of the present invention. 
     FIG. 2 is a diagram of the structure of the software which controls the operation of the system of FIG. 1. 
     FIG. 3A is an isometric view of a vending machine adapted for use with the system of the present invention. 
     FIG. 3B is a diagram of the positioning system used by the vending machine of FIG. 3A. 
     FIG. 3C is a diagram of a look-up table used by the positioning system of FIG. 3B. 
     FIGS. 4A-4C are a series of flow diagrams showing the overall operation of the vending machine network of the present invention during a typical article rental cycle. 
     FIGS. 5A-5C are a series of flow diagrams showing the overall operation of the vending machine network of the present invention during a typical article return cycle. 
     FIG. 6 is a block diagram of the components of the vending machine described in conjunction with FIG. 3A. 
     FIG. 7 is a diagram of the circuitry used to position the carousel of the vending machine described in conjunction with FIG. 3A. 
     FIG. 8 is a rear view of the carousel of the vending machine of FIG. 3A. 
     FIG. 9 is a rear view in perspective of bar code scanners used to identify items stored in the carousel of the vending machine of FIG. 3A. 
     FIG. 10 is a schematic diagram of the aperture sensing means of the vending machine of FIG. 3A. 
     FIG. 11 is a flow diagram of the carousel positioning system of the vending machine described in conjunction with FIG. 3A. 
     FIG. 12 is a continuation of the flow diagram of FIG. 11. 
     FIGS. 13A-13C are a series of flow diagrams detailing the operation of the host system while communicating with the dispensing machines. 
     FIG. 14 is a flow diagram of the maintenance procedure for processing a hot-card file. 
     FIGS. 15A-15B are a series of flow diagrams detailing the process for submitting accumulated card charges to an associated financial institution for reimbursement in the system of the present invention. 
     FIGS. 16A-16B are a series of diagrams detailing the process by which dispensing machine exceptions are reported to service personnel. 
     FIG. 17 is a flow diagram detailing the inventory handling system of the present invention. 
     FIGS. 18A and 18B are flow diagrams detailing the process by which inventory records are updated when an article is removed from one dispensing machine and returned to another. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The present invention provides a vending machine network which includes automatic inventory management, billing management and system maintenance. The system 100 includes a plurality of vending machines (e.g. vending machines 104-109) which are preferably adapted for renting articles such as videotapes, discs, cartridges, etc. Each vending machine (104-109) in the system 100 is capable of autonomous operation and includes means for receiving and dispensing articles, means for tracking which inventory items have been rented or are in stock, (or returned to stock) means for monitoring operational characteristics of the vending machine, and means for tracking and reporting customer billing information. The specific subsystems of vending machines 104-109 are discussed in more detail below. While the system 100 is shown with four exemplary vending machines, those skilled in the art will appreciate that the system 100 can be expanded to accommodate virtually any number of vending machines. 
     Each vending machine 104-109 in system 100 includes means for communicating information to control processing system 110 wherein each vending machine 104-109 periodically accesses control processing system 110 to report vending machine activity since the last reporting period. For example, each vending machine is provided with an inventory of articles such as videotapes for rental. When an article is rented, the vending machine records which item was rented, as well generating and storing billing information for the transaction. In the preferred practice of the present invention, customer billing is implemented with conventional credit, debit or membership cards wherein the cost for renting an article is billed to a customer&#39;s card account. Accordingly, during a typical rental transaction, the customer&#39;s card is read and the number is stored in a transaction file for later presentment to a financial institution 112. Each vending machine 104-109 also maintains an operating file which records internal operational errors. 
     Periodically, each of the respective vending machines 104-109 access the control processing system 110 to report any vending machine activity since the last reporting period. In the preferred practice of the present invention, communication between the control processing system 110 and the respective vending machines 104-109 is implemented with conventional telephone lines and modems, although dedicated lines would also function satisfactorily. During a typical communications session, each of the vending machines reports a variety of information to the control and processing system 110. For example, a typical communications session may include reports of the current inventory of the vending machine, (including which items were rented or returned since the last reporting period) any operational failures, and the credit or debit card data for each rental transaction. The control processing system 110 processes this information in a number of ways. The inventory reports may be used to update the inventory records of the control processing system 110 and the vending machine. For example, if an article is rented in one vending machine and returned to another, it must be removed from the inventory record of the vending machine from which it was rented. 
     The operational failure records may be used to compile machine operational characteristics at the control processing system 110, wherein service personal are sent to the vending machine if recurring failures are reported. Finally, the credit or debit card data is compiled by the control processing system 110 for each vending machine in the system and presented to a financial institution 112 for payment. Preferably, the credit or debit card data is sent to financial institution 112 via a communications link, such as one provided by a telephone line and modem, although virtually any method of transferring data, such as magnetic tape or printed reports, would also be satisfactory. 
     In the preferred practice of the present invention, each inventory article is identified by a unique identification number which is encoded in accordance with the Universal Product Code (UPC) in conjunction with a unique tape identifier number, and which is affixed to each article in the form of a conventional bar code strip. Accordingly, as new items are added to or removed from the system 100, the respective bar codes corresponding to each article may be scanned by bar code system 114 for processing by control processing system 110 when updating inventory files. 
     Referring now to FIG. 2, in the system 100, the control processing system 110 is controlled by system which provides five primary functions. One function of system 200 is inventory management system 204 and the communications system 206 which cooperate to control the traffic of articles throughout the system 100. For example, in the preferred practice of the present invention, the dispensing machines 104-109 may be used in a videotape rental network wherein videotapes may be rented and then returned to the system. The present invention provides a method and means whereby a videotape may be acquired from one machine in the network and returned to another wherein the system 100 tracks the actual location of the videotape. This function is provided by the inventory management system 204 and the communications system 206 which may communicate with the respective vending machines via modems 214, 216 or via dedicated lines 218-222. 
     During the typical operation of the system 100, users charge the cost of the rental on a credit, debit or membership card. These transactions are recorded by bank system 208. In addition, bank system 208 communicates with a financial institution 112 for preauthorization of the transaction (where desired) and for reimbursement for the card-based transactions. Communication with the financial institution 112 is preferably conducted over telephone communication lines 224, although other media such as magnetic tape may also be used. In addition, the system 200 includes system support functions such as automatic service request generation controlled by service system 210 and hot-card tracking provided by hot-card system 212. The detailed operation of each of the systems mentioned above is discussed in detail below. 
     Referring now to FIG. 3A, a vending machine adapted for use with the present invention is shown. A pseudo-code listing of the control software for controlling the respective vending machines is set forth in Appendix 4 and is also described in conjunction with the flow diagrams discussed below. The vending machine 300 incorporates a carousel 304 which is rotatably supported on spindle 306 wherein the carousel 304 is coupled to a conventional D.C. motor 308 with belt 310. The belt 310 may be constructed of any of a number of materials and preferably comprises a conventional v-belt. The angular position of carousel 304 is adjusted by selectively activating the D.C. motor 308 wherein the direction of travel of carousel 304 is controlled by the polarity of the voltage across D.C. motor 308. 
     The carousel 304 may preferably be configured with a plurality of bins 312 arranged in a plurality of concentric rings wherein the bins 312 are adapted for storing articles to be dispensed, such as videotapes. The bins 312 are aligned with doors 314-318 such that individual bins are aligned with doors 314-318 when the carousel 304 is in a predetermined position, so articles may be stored in or removed from the bins 312 through doors 314-318. As in prior vending machines, articles may be selected with exemplary controls 320 which are coupled to a control system 322. For example, controls may be provided for allowing a user to rent, return, preview, move the cursor on the display screen, choose additional selections, or to cancel previous entries. In addition, status lights 323 may be included to indicate when a desired article is behind a respective access door 314-318. The dispensing machine 300 may also include a video display 324 for displaying system status information and a magnetic card reader 326 for receiving customer account information. 
     As will be discussed in more detail below, the improved positioning system of the present invention incorporates a bar code scanner 380 and an aperture sensor 332 for detecting the position of carousel 304. 
     Referring now to FIGS. 3B-3C, the positioning system 350 includes carousel 304 having a plurality of apertures (e.g., apertures 311, 354-358) disposed about the perimeter of the carousel 304, and a carousel position bar code ring 360 disposed coaxially with respect to the plurality of apertures wherein each aperture is aligned with a particular bar code area. The bar codes of the bar code ring 360 as well as the apertures 311, 354-358 are disposed in a pattern of three bar code areas/apertures, separated by a space, followed by three bar code areas/apertures, etc. This arrangement is useful to encode the position of three offset concentric bin rings within carousel 304. 
     The system 350 includes sensor 332 which detects when the sensor 332 is aligned with an aperture. The bar code scanner 380 reads the bar code currently aligned with the bar code scanner 380. A control computer 307 receives inputs from the sensor 332 as well as the bar code scanner interface 362. The bar code scanner interface 362 receives inputs from the bar code scanner 380 and converts the TTL output signal of scanner 380 to an ASCII signal processed by control computer 307. A bar code scanner and bar code interface suitable for use with the present invention is the MS-500 scan head and the MS-2000 decoder available from Microscan Systems, Inc., 939 Industry Drive, Tukwila, Wash. 98188. The position of carousel 304 is controlled by motor 308 which is coupled to carousel 304 via belt 310. The belt 310 is preferably of the well-known v-belt type. 
     The motor 308 is responsive to signals developed by D.C. motor controller 370 which is in turn controlled by control computer 307 through I/O controller 372. I/O controller 372 is a conventional computer interface device which communicates with control computer 307 through data bus 309. An I/O controller suitable for use with the present invention is available from Metrabyte, 440 Myles Standish Blvd., Taunton, Mass. 02780. The I/O controller 372 receives commands from control computer 307 and in response thereto generates a plurality of motor control signals. Specifically, motor controller 370 generates a positive or negative D.C. voltage for actuating D.C. motor 308, as well as generating various status signals regarding the state of the system. Specifically, the motor controller 370 receives as inputs an enable signal, a direction control signal, and a signal for effecting fast and slow operating modes. In addition, motor controller 370 outputs a signal which indicates whether the motor rotor is locked. A conventional power supply 375 provides power to the system 350. 
     The detailed operation of the system 350 is described in more detail in conjunction with FIG. 11. Briefly, the initial carousel position is determined by aligning the sensor 332 with an aperture and by reading the bar code in code ring 360 corresponding with that position. In use, a user signals control computer 307 to move the carousel 304 to a predetermined position as is discussed in more detail below. Each valid position of carousel 304 is indicated by the carousel code ring 360. The control computer 307 then calculates the number of apertures between the current position and a desired position based on data stored in a look-up table 352 of the type shown in FIG. 3C. Table 352 is created as inventory is loaded into carousel 304. As each item is loaded in the carousel 304, the bar code corresponding to its position is recorded in the look-up table 352. Table 352 may be utilized as follows. It is determined where the carousel 304 is presently located by reading the bar code at the current carousel position (e.g., bar code positions 1-80). If an article in bin 60 is desired and the carousel 304 is currently at position 01, it can be determined that the carousel 304 must be rotated (in reverse) by two apertures. Similarly, if an article in bin 60 is desired and the carousel 304 is currently in position 59, it can be determined that the carousel 304 must be rotated (in forward) by 20 apertures. 
     Once the desired movement is determined, the motor 308 is then activated at fast speed until the desired position is within one aperture, at which time the motor 308 is switched to a slow speed to attain the final position. After movement of carousel 304 is terminated, the control computer 307 instructs the bar code scanner 380 to read the bar code currently aligned with the scanner 380 to verify that the correct position was attained. If the correct position was not attained, the control computer 307 records the positioning error (for use as a diagnostic) and the positioning sequence is repeated. Whenever the carousel 304 is in motion, the control computer 307 continuously monitors for a locked rotor condition through locked rotor detector 374. 
     Referring now to FIGS. 4A-4C, the routine 400 describes the operation of the respective vending machines 104-109 during a normal rental cycle. Item 402 is invoked whenever a user inserts a credit card in the vending machine. Decision 404 then determines whether the inserted card is valid. If not, the routine returns. Otherwise, control passes to item 406 when a user selects the &#34;RENT&#34; option with user actuated inputs 320. The vending machine then displays a list of articles available for rent (e.g., a list of available movie titles, etc.) in item 408. Item 410 then gets the user&#39;s selection. Decision 412 detects whether the user input is &#34;CANCEL.&#34; If so, the routine returns. Otherwise, decision 414 determines whether the user has requested the next set of titles. If so, item 426 gets the next set of titles and control returns to item 408. If the result of decision 414 is negative, decision 416 and 418 move a display cursor in accordance with user inputs 320. Once the user has selected an item, decision 420 determines whether the user has requested a preview for the selected title. 
     As will be discussed in more detail below, each of the vending machines in system 100 includes a video display 324 and a random access video source, such as a videodisk system which is controlled by routine 400. If in decision 420, the user requests a preview, decision 422 determines whether a preview exists for the requested item. If not, item 428 generates an appropriate message on the vending machine display 324 and control passes to item 408. If a preview is available, item 424 plays the requested preview and control returns to item 408. 
     If in decision 420, the user does not request a preview, control passes to decision 429 which determines whether the user indicates he wishes to rent the selected article. Decision 430 determines whether the appropriate user input is received within a predetermined time limit. If not, the routine returns. Otherwise, control loops back to item 408 until a user input is received. If the user indicates he wishes to rent the selected item, control passes to decision 432 which determines whether the requested article is in stock. If not, item 434 displays an appropriate message to the user. Control then returns to item 408. If the requested item is in stock, item 436 instructs the position system 350 to move the carousel 304 to the appropriate position which is confirmed by item 438. Item 440 then checks to verify that the requested item is in the predetermined bin position and item 442 unlatches the appropriate access doors 314-318 so the requested article may be removed from the vending machine. After a predetermined delay, items 444 and 446 close and relatch the access doors 314-318. Decision 448 then determines whether the requested article was removed from the vending machine. If not, the routine returns. If so, item 450 sets an internal flag to indicate the article has been removed from inventory and the vending machine inventory records are updated by item 452. Item 454 then prints a customer receipt and the routine returns. 
     FIGS. 5A-5C describe the operation of the vending machines 104-109 during a typical article return cycle. The return cycle begins when a user inserts his credit card in the vending machine and select &#34;RETURN&#34; as indicated by items 502-504. Item 506 then moves the carousel 304 so the access doors 314-318 are aligned with the next closest empty bin. The carousel position is then verified by item 508. Once item 510 verifies the selected bin is empty, the access doors 314-318 are unlatched by item 512. After a predetermined delay, the access doors are closed and relatched by items 514 and 516. Decision 518 then determines whether an article was returned to the selected bin. If not, the routine returns. Otherwise, the article identification number is read by item 520. Decision 522 then determines whether the article identification was correctly read. If not, item 524 sets an internal flag to indicate the article cannot be identified and item 526 prints a conditional return receipt. The routine then returns. 
     If the article identification number was correctly read, decision 528 determines whether the article is part of the regular vending machine inventory. If not, item 530 sets an internal flag to indicate that the article is an inventory item from another machine and item 532 prints a conditional return receipt. The routine then returns. If the article is from the vending machine&#39;s regular inventory, item 534 records the article&#39;s position in the carousel 304 in the article inventory file. Item 536 then calculates the customer charges and records them in a transaction file. Item 538 then closes the rental transaction and item 540 prints a customer receipt. The routine then returns. 
     Referring now to FIG. 6, a block diagram of an exemplary vending machine is shown. The operation of a vending machine is controlled by control computer 307. The control computer 307 controls the position of carousel 304 through motor controller 370 and motor 308. Communication with control processing system 110 is provided through modem 608, operating in conjunction with any of a number of well-known communication software packages. Customer receipts are printed with printer 610. The control computer 307 is coupled to preview system 324 through I/O controller 372. I/O controller 372 is further coupled to selector switches 313-318, through keyboard decoder 621, which are used to select articles; to door latches 630, 631 and 633, which lock the access doors 314-318; and to retroreflective scanners 632, 634 and 636, which detect whether articles are in respective slots. Door latches 630, 631 and 633 may preferably be of the conventional solenoid actuated type, configured to lock the access doors 314-318 when in a resting state. In addition, control computer 307 cooperates with decoder-I/O board 618 to control magnetic card reader 326 and bar code read heads 380, 622-626. 
     Referring now to FIG. 7, the motor controller 604 comprises a number of conventional circuits which may be implemented in a number of ways. The direction controller 702 is responsive to the direction control signal generated by I/O controller 372, and it controls the polarity of the voltage across motor 308. The speed controller 704 may be constructed of conventional circuitry, which is a response to the fast and slow control signals generated by I/O controller 372, and it generates a variable D.C. voltage which is based on the currently selected mode of operation. In the preferred practice of the present invention, speed controller 704 generates 90 volts in the fast mode, 60 volts in the slow mode and 0 volts if neither mode is selected, although the actual voltages may vary depending on the specific D.C. motor 308 used with the system. A brake control 706 is coupled between speed controller 704 and brake 708 to effect a braking signal whenever a fast or slow motor control signal is absent. Brake 708 is responsive to the braking signal and it comprises a well known device which clamps the rotor of motor 308 whenever the braking signal is actuated. Locked rotor detector 710, coupled between motor 308 and I/O controller 372, monitors the amount of current consumed by motor 308 to detect a locked rotor condition (which is indicated by an excessive amount of current consumed by motor 308). If such a condition is detected, the motor 308 is disabled by safety disable 712. Similarly, access door detectors 714, coupled to access doors 314-318, detect when an access door is open. When such a condition is detected, the safety disable circuit 712 disables motor 308. 
     Referring now to FIG. 8, the rear face of carousel 304 is shown. In the preferred practice of the present invention, in the rear face of carousel 304, apertures (e.g. apertures 802, 804, 806) are disposed in a position coinciding with the position of each of the respective bins of carousel 304 so that the contents of the respective bins are visible through the apertures. As noted above, the respective bins are arranged in a plurality of concentric rings 808-812 with respective compartments within each ring being spaced equidistant from each other. 
     FIG. 9 is a rear view in perspective of a plurality of bar code scanners 622-626 aligned with apertures on the rear face of carousel 304. As noted above, as an article (e.g., article 910) is loaded in the carousel 304, it is visible through an associated aperture (e.g., apertures 802, 804, 806). Each article is encoded with a bar code 912 which may be scanned by an associated bar code scanner 622-626. Whenever a bar code is scanned, it is coupled to control computer 307 from bar code scanner heads 622-626 through bar code decoder 618. In addition, retroreflective scan heads 632-636 are used to detect whether items are present in a particular bin if a bar code cannot be detected. 
     Referring now to FIG. 10, the sensor 332 comprises an emitter/detector 1002 comprising laser diode 1004 and detector 1006. Resistor 1008, coupled between laser diode 1004 and a V+ power supply input 1010, provides power to laser diode 1004. Laser diode 1004 and detector 1006 are disposed on either side of carousel 304 aligned with the respective apertures disposed about the circumference of carousel 304 so that the light generated by laser diode 1004 travels through the apertures (e.g. aperture 311) to activate detector 1006. When detector 1006 is activated, current flows from the V+ power supply terminal 1010 into resistor 1012, thus generating a positive voltage across resistor 1012 which is coupled through resistor 1016 to the noninverting input of buffer amplifier 1014. A reference voltage for buffer amplifier 1014 is provided by a voltage divider formed by resistors 1018 and 1020. The gain of buffer amplifier 1014 is controlled by resistor 1022. The output of buffer amplifier 1014 is coupled to control computer 307 through output terminal 1024. Pull-up resistor 1026 is disposed between output terminal 1024 and V+ input terminal 1010. Resistor 1028 and LED 1030 provide an indicator light for aperture detection. 
     Referring now to FIGS. 11-12, the detailed operation of the control computer 307 is shown. When the carousel positioning routine 1100 is invoked, item 1101 initializes a recount counter. Item 1102 and decision 1104 then read the output of sensor 332 to determine whether the carousel 304 is in a valid position. A valid position is defined as a position wherein the sensor 332 is aligned with an aperture e.g., apertures 354-358). If the carousel 304 is not in a valid position, item 1106 activates the carousel drive motor 308 in the slow speed. While the carousel 304 is moving, decision 1108 monitors the rotor locked signal to ensure the drive motor 308 is not locked. Assuming the drive motor 308 is not locked, control passes to decision 1104 until the carousel position is initialized. Once the carousel position is initialized, item 1110 activates the bar code scanner 380 to read the current position of the carousel 304. Item 1112 then calculates the number of positions and direction to rotate the carousel 304 based on the current and the desired position. 
     As noted above, the present invention contemplates the use of a carousel 304 having compartments for storing and dispensing articles. The respective compartments are arranged in offset concentric rings 808-812 wherein the outer ring 808 has 60 compartments, the middle ring 810 has 40 compartments and the inner ring 812 has 20 compartments. In the preferred practice of the present invention, 80 apertures are used to encode the position of all 120 compartments. As mentioned above, a mapping table 352 is used to map the 80 aperture positions to physical compartments. This mapping table is used by item 1112 when calculating the number of positions in which to rotate the carousel 304 to a desired position. In other words, each compartment in any of the three rings may be used to store a unique article. Each compartment may be identified by a unique bar code and by its ring number, e.g., ring 808, 810 or 812. The mapping table 352 is used to correlate the location of each unique compartment with its corresponding bar code/aperture as well as its ring number location. 
     Once a desired position for carousel 304 is calculated by looking up the desired position in the mapping table 352 and calculating an offset from the current carousel position, decision 1114 determines whether the carousel is already in the desired position. If so, the routine returns. Otherwise, decision 1116 determines whether the carousel is within one aperture of a desired position. If so, the routine enters slow speed loop 1203. If not, the system 350 enters fast speed loop 1201 wherein item 1202 starts moving the carousel 304 at fast speed, while decision 1206 monitors the drive motor 308 for a locked condition. Decision 1204 determines whether the carousel 304 is within one aperture of the desired position. If so, item 1208 stops the carousel 304 and the routine enters slow speed loop 1203 wherein item 1210 activates the carousel 304 at slow speed. Decision 1212 then monitors the carousel 304 to determine when it is in the position corresponding to the next aperture, while decision 1214 monitors the drive motor 304 for a locked condition. If decision 1108, 1206 or 1214 detect a locked rotor condition, control passes to item 1224 which shuts down the system while item 1226 generates an error message and the routine returns. 
     Once the carousel 304 is in the calculated position, the carousel 304 stops in item 1216, and item 1218 activates the bar code scanner 380 to read the bar code of the current carousel position. Decision 1220 then determines whether the current position is the same as the desired location. If not, control passes to decision 1222 which determines if the retry count has reached a predetermined maximum value. If so, control passes to items 1224 and 1226 and the routine returns. Otherwise, item 1227 generates a warning message and item 1228 increments the recount flag. Control then returns to item 1102 to repeat the procedure until the correct position is found or until the recount is exhausted, indicating a system failure. 
     Referring now to FIGS. 13A-13C, the routine 1300 comprises the host communication system 206 of FIG. 2. In the system 100 each of the respective vending machines maintains a plurality of files which may be accessed or modified during the operation of the machine. For example, a credit/debit card file is used to store customer billing information. A hot card file is used to maintain a list of invalid credit card numbers. A movie inventory file is used to maintain a list of movie titles and other pertinent information for articles currently in the particular vending machine&#39;s inventory. A screen message file contains a list of messages which may be displayed to a user. A printer message file contains a list of messages which may be printed on receipts issued to a user and a control file is used to store configuration parameters such as tax rates, callback modem phone numbers, store location, etc. The routine 1300 is invoked to retrieve transaction information from the dispensing machines and to transmit files to the dispensing machines. When invoked, item 1302 loads the machine dialing directory. 1304 determines whether the dialing function is completed for all machines in the system. In operation, each machine in the system is dialed sequentially until every machine in the system has been called. If all machines have been dialed, the routine returns. Otherwise, control passes to item 1306 to dial the next machine. Decision 1308 determines whether the machine of interest answers. In item 1310, a hard copy exception message is printed to indicate the machine did not answer. Control then passes to decision 1304. If the machine answers, the host 110 terminates the call and waits for the machine of interest to return the call in item 1312. Decision 1314 determines whether the machine calls back. If not, control passes to item 1310 wherein item 1310 is passed the appropriate text message to indicate the machine did not call back. Otherwise, control passes to item 1316, which instructs the machine to generate a back-up copy of its transaction types. Item 1318 instructs the machine to transmit its transaction data. The definition of transaction data types and data formats is set forth in Appendix 1. In the preferred practice of the present invention, each transaction is recorded in a sequential ASCII flat data file. An example of actual transaction data is set forth in Appendix 2. 
     Once the transaction data is transmitted to the host, control passes to item 1320 wherein the host instructs the machine to delete its transaction data. Control passes to decision 1322 wherein the host 110 parses the transaction data based on transaction type. In item 1324, the machine is instructed to generate a back-up copy of its card file. This file is a temporary file which is used to track pending card information. For example, card numbers for items currently being rented are stored in this file. The card file is an indexed sequential access method (ISAM) type file having entries of the format shown in Appendix 3. 
     Item 1326 then instructs the machine to send its card file to provide for the cross return of tapes in different machines in the system. 
     The present invention contemplates the use of a variety of flags which indicate the state of each machine in the system. For example, a hot-card file redistribute flag is used to indicate a new card has been added to the hot-card file and this card number is to be transmitted to the particular machine. A card file flag is used to indicate a particular card is to be deleted from the card file of a particular machine. A movie file flag is used to update a machine&#39;s master movie file. A screen file flag is used to update a machine screen message file. A printer message file is used update a machine&#39;s printer message. A control file flag is set to update certain control file information such as call-back phone numbers, etc. 
     Decision 1328 determines whether the hot-card redistribute flag is set for the particular machine. If not, control passes to decision 1334. Otherwise, item 1330 sends the updated hot-card file to the machine. Control then passes to item 1332 to reset the flag. Decision 1334 determines whether the card file redistribute flag is set for the particular machine. If not, control passes to decision 1340. Otherwise, item 1336 sends the card file to the machine. Control then passes to item 1338 to reset the flag. Decision 1340 determines whether the movie file redistribute flag is set for the particular machine. If not, control passes to decision 1346. Otherwise, item 1342 sends the movie file to the machine. Control then passes to item 1344 to reset the flag. Decision 1346 determines whether the screen message file redistribute flag is set for the machine. If not, control passes to decision 1352. Otherwise, item 1348 sends a new screen message file to the machine. Control then passes to item 1350 to reset the flag. Decision 1352 determines whether the printer message redistribute flag is set for the machine. If not, control passes to decision 1358. Otherwise, item 1354 sends the printer message file to the machine. Item 1356 then resets the flag. Decision 1358 determines whether the control file redistribute flag is set for the machine. If not, control passes to item 1364. Otherwise, item 1360 sends the control file to the machine and item 1362 resets the flag. 
     Item 1364 instructs the machine to restart itself since the machine is typically disabled during the above functions. Decision 1366 then determines whether the restart was successful. If not, control returns to item 1310 to generate the appropriate hard copy error message. The communication session is then terminated in item 1368 and the routine returns. 
     Referring now to FIG. 14, the routine 1400 is invoked to maintain the hot-card file portion of the hot-card system 212. When invoked, decision 1402 determines whether the system manager wishes to add or delete a card number from the list. If add/delete is selected, control passes to item 1408 which prompts the operator for the card number to add or delete. Item 1410 then updates the ISAM hot-card file (as shown in Appendix 3) accordingly. Subsequently, item 1412 sets the hot-card file redistribute flag to redistribute the hot-card file to every machine in the network. Control then returns. 
     If the result of decision 1402 is negative, control passes to decision 1404, which determines whether report selection has been requested. If so, control passes to item 1406 to print a hot-card report based on the &#34;SX&#34; transactions recorded in the transaction data. Control then returns. 
     Referring now to FIGS. 15A-15B, the routine 1500 is invoked to submit charges to a financial institution 112 for reimbursement. When invoked, decision 1502 determines whether there are any pending deposits (which are identified by the TI prefix in the transaction file). If there are no pending deposits, the routine returns. Otherwise, item 1504 converts the deposit transaction from the &#34;TI&#34; transaction format to the required financial institution&#39;s format which may be specified by ISO Standard Number ISO 8583, Aug. 15, 1987. An example of another format which may be used by a financial institution is set forth in Appendix 5. Item 1506 then calculates batch totals, which are the total number of transactions and total deposit amount. Item 1508 then inserts a batch trailer at the end of the file and Item 1510 inserts a batch header at the beginning of the file wherein the batch header contains static information such as merchant number, etc. Item 1512 then sends the batch to the financial institution 112 via a telecommunications link or causes the generation of a computer tape, etc. Decision 1514 verifies whether the transmission was successful. If so, item 1516 archives the batch, and item 1518 deletes the working batch file. The routine then returns. If the result of decision 1514 was negative, control passes to item 1520 which sets a retransmit flag in the batch to assist in verifying whether the batch has been previously received by the financial institution, and control passes to item 1512. 
     Referring now to FIGS. 16A-16B, the routine 1600 is invoked to generate reports to initiate service requests in the service system 210. When invoked, item 1602 parses service transactions from the machine transaction file by machine to generate a service report specific to each machine. Decision 1604 then determines whether all machines have been processed. If so, the service transaction file is archived by item 1606. The working service request file is then deleted by item 1608 and the routine returns. If the result of decision 1604 is negative, item 1610 sends a form feed command to the system printer so the report for each machine begins at a new page. Control then passes to item 1612 which prints header information such as machine I.D. and address information at the top of the report for that machine. The routine 1600 then tests for five different types of errors (e.g., number of card errors greater than a predefined limit (MC-type); carousel homing errors (HW-type); restart records (IN-type) (initializations); hard errors (E-type); soft errors (S1-S7-type). Specifically, decision 1614 determines whether &#34;MC&#34; type errors are over a predefined limit. If not, control passes to decision 1618. Otherwise, item 1616 prints the appropriate service instruction. Decision 1618 determines whether &#34;HW&#34; type errors are over a predefined limit. If not, control passes to decision 1622. Otherwise, item 1620 prints the appropriate service instruction. Decision 1622 determines whether &#34;IN&#34; type errors are over a predefined limit. If not, control passes to decision 1626. Otherwise, item 1624 prints the appropriate service instruction. Item 1626 determines whether &#34;E&#34; type errors are over a predefined limit. If not, control passes to decision 1630. Otherwise, item 1628 prints a service instruction. Decision 1630 determines whether any &#34;S1-S7&#34; errors occurred in the transaction. If not, control passes to decision 1604. Otherwise, item 1632 prints a service instruction. 
     Referring now to FIG. 17, the routine 1700 is invoked to perform inventory management in inventory control system 204. When invoked, decision 1702 determines whether the operator selects the &#34;Add Tapes&#34; option. If not, decision 1704 determines whether the operator selects the &#34;Remove Tapes&#34; option. If not, decision 1706 determines whether the operator selects the &#34;Print Reports&#34; option. If the operator selects the &#34;Add Tapes&#34; option item 1708 prompts the operator for the title of the article to be added to the system. Decision 1710 then prompts the operator to scan the bar codes of the article to be added. Item 1712 then adds the article&#39;s identification code to the inventory. Item 1714 then updates the inventory file to reflect the number of copies of the article currently in the system. Decision 1716 then determines whether additional articles are to be added to inventory. If so, control returns to item 1708. If not, control passes to item 1724 to set the file redistribute flag to on to indicate that the inventory file has been changed since it was last communicated to respective dispensing machines in the system 100. If in decision 1704, the operator selects the &#34;Remove Tapes&#34; option, item 1718 prompts the operator to scan the inventory bar code on the article to be removed from inventory. Item 1720 then deletes the article from the inventory. Control then passes to item 1722 which decrements the number of copies of the article in the system and item 1724 then sets the movie file redistribute flag to on. 
     If in decision 1706 the operator selects the &#34;Print Reports&#34; option, item 1726 prints the title short report based on TE-type transactions. Item 1728 then prints a &#34;Title Over&#34; report (which indicates overstock of a particular article) based on a lack of TI-type transactions under a predefined limit. Item 1730 then prints a &#34;Time of Day/Day of Week&#34; (which indicates the pattern of rental activity) report based on the date and time from the TI-type transactions. 
     Referring now to FIG. 18A, the routine 1800 is invoked at the vending machine for inter-vending machine article rental and return. In item 1802 a tape is rented from a source vending machine wherein in item 1804 the article identification code, date and time, and credit card number are captured in the source vending machine and stored in a card file internal to the source vending machine. In item 1806 an article is returned to a destination vending machine. Decision 1808 then determines whether an entry exists in the card file for the outgoing rental in the destination vending machine. If in item 1810, the system determines the tape was rented from the destination vending machine, normal billing procedures are invoked in item 1812, as discussed above in conjunction with FIG. 5A-5C. Otherwise, item 1814 generates a conditional receipt assuming a single-day rental for the TI-type transaction. Item 1816 then generates an unknown rental date and time transaction, and item 1818 flags the article as rentable. Item 1820 then sets the tape location flag for the destination vending machine and the routine returns. 
     Referring now to FIG. 18B, the routine 1821 is invoked at the host 110 whenever an article removed from one vending machine is returned to another in the system. Item 1822 is invoked to receive a conditional return transaction TI-type, with an unknown rental date and time) from a different vending machine in the system 100. Item 1824 then matches the conditional return transaction with outgoing credit card rental activity from the source vending machine in the system 100. Decision 1826 then determines whether the number of rental days is equal to one. If not, 1828 adjusts the billing information accordingly, and control passes to item 1830. If the result of decision 1826 is affirmative, control passes to item 1830 which deletes the outgoing credit card rental entry from the source vending machine. Item 1832 then sets the card file redistribute flag to on for the vending machine of interest, and item 1834 updates the inventory to indicate that the article removed from the source vending machine is now located in the destination vending machine, and item 1836 sets the movie file redistribute flag to true for the source vending machine. The routine then returns. 
     In the summary, an improved automatic merchandise dispensing and retrieval system has been described. 
     Accordingly, other uses and modifications will be apparent to persons of ordinary skill without departing from the spirit and scope of the present invention and all such modifications are intended to fall within the scope of the appended claims. ##SPC1## ##SPC2## ##SPC3## ##SPC4## ##SPC5##