VOLUME VERIFICATION APPARATUS AND METHOD

Abstract: Embodiments disclosed herein provide apparatus and methods for verifying a volume of fluid. According to one embodiment, an apparatus includes a receptacle for containing fluid, a first conductor operatively associated with the receptacle and a second conductor operatively associated with the receptacle offset from the first conductor. A source of a first electrical signal is electrically connected with the first conductor. A monitor is electrically connected with the second conductor for detecting a second electrical signal created in the second conductor. In another embodiment, a method includes positioning a receptacle adjacent a fluid dispense nozzle such that fluid dispensed from the nozzle enters the receptacle. A first electrical signal is applied to a first conductor operatively connected with the receptacle. A second electrical signal created in a second conductor operatively connected with the receptacle responsive to the first electrical signal is monitored.

Description: VOLUME VERIFICATION APPARATUS AND METHOD BACKGRQUNΓ OF THE INVENTION Embodiments of the present invention generally relate to an apparatus and a method for checking or verifying a volume of a fluid. More specifically, the embodiments relate to an apparatus and a method for verifying fluid volume for use in an automated instrument. Automated instruments are available to perform a number of tasks. One such automated instrument is an analytical instrument. An analytical instrument can perform tests, such as medical diagnostic tests, on a sample. For example, such tests may identify the AIDS virus in a blood sample or other item of interest in a biological sample. To perform such tests, an analytical instrument may mix the biological sample with a substance, such as a reagent and the like. In some embodiments, these reagents may be fluids. The fluids may be supplied to the biological sample within the medical instrument by a fluid system. The fluid system may include a source of fluid, a pump, a dispense nozzle and a conduit fluidly connecting those elements. The source of fluid may be a container and the like. The pump moves fluid from the container toward the dispense nozzle through the conduit. The sample, which may be held in a suitable container, is positioned adjacent the dispense nozzle. When the pump is operated, fluid from the container leaves the nozzle and enters the sample container. Movement of the fluid into the container, if desired, can cause the fluid and the sample to mix. Illustrating further by example, a given instrument may perform a blood analysis. The instrument adds a predetermined volume of a fluid to a predetermined volume of a blood sample. The fluid reacts with the blood sample. Because of the reaction between the sample and the fluid, an electromagnetic or chemi- optical signal or light is sent from the mixture of sample and fluid. A detector in the instrument sees or reads the light sent from the mixture. Appropriate elements of the instrument, such as a computer and the like, interpret the information obtained by the detector and provide an operator with information about the blood sample. In order for this instrument to perform as intended and to give accurate results, it is desirable that a specific, predetermined amount or volume of fluid be mixed with the sample. If too much or too little fluid were added to the sample, the light sent from the mixture may be different from the proper light sent from the mixture when the predetermined volume of fluid is added. The different light sent from the mixture is interpreted by the computer in the same way as the proper light. Therefore, the computer may give inaccurate information to the operator of the instrument. The possibility of inaccurate information being given by an instrument is a concern. For example, the test performed may be to see if a unit of blood were infected with the AIDS virus. Assuming that the blood is infected with the AIDS virus, adding too little or too much fluid to the blood sample may result in the instrument telling the operator that the unit of blood is not infected with the AIDS virus. Accordingly, it can be appreciated that it is desirable to have an apparatus connectable with the instrument for checking elements of a fluid system and for verifying that the proper, predetermined amount of fluid has left the dispense nozzle and entered the container during operation of the analytical instrument. SUMMARY OF THE INVENTION Embodiments disclosed herein provide apparatus and methods for verifying a volume of fluid. According to one embodiment, an apparatus includes a receptacle for containing fluid, a first conductor operatively associated with the receptacle and a second conductor operatively associated with the receptacle offset from the first conductor. A source of a first electrical signal is electrically connected with the first conductor. A monitor is electrically connected with the second conductor for detecting a second electrical signal created in the second conductor. In another embodiment, a method includes positioning a receptacle adjacent a fluid dispense nozzle such that fluid dispensed from the nozzle enters the receptacle. A first electrical signal is applied to a first conductor operatively connected with the receptacle. A second electrical signal created in a second conductor operatively connected with the receptacle responsive to the first electrical signal is monitored. In a further embodiment, a method comprises placing a volume of fluid within a receptacle. A first conductor is positioned adjacent the receptacle such that the first conductor does not contact the volume of fluid. A second conductor is positioned adjacent the receptacle such that the second conductor does not contact the volume of fluid or the first conductor. A first electrical signal is applied to the first conductor. A second electrical signal generated in the second conductor responsive to the first electrical signal is monitored to verify the volume of the fluid in the receptacle. In an additional embodiment, an apparatus for verifying a volume of fluid comprises a receptacle for containing fluid. A first conductor is operatively associated with the receptacle such that the first conductor does not contact the volume of the fluid. A second conductor is operatively associated with the receptacle offset from the first conductor such that the first conductor does not contact the volume of the fluid. A source of a first electrical signal is electrically connected with the first conductor. A monitor is electrically connected with the second conductor for detecting a second electrical signal created in the second conductor. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram view of a volume verification apparatus disclosed herein; Fig. 2 is an enlarged plan view of a portion of the apparatus of Fig. 1; Fig. 3 is a sectional view, along line 3-3 of Fig. 2; Fig. 4 is an enlarged sectional view of a portion of the apparatus shown in Figs. 2 and 3 ; Fig. 5 is a plan view of an element of the apparatus shown in Fig. 4; Fig. 6 is a side elevational view of a portion of the element shown in Fig. 5; Fig. 7 is a block schematic diagram of a portion of the apparatus of Fig. 1; Fig. 8 is a generic block diagram of a portion of the apparatus of Fig. 1; Figs. 9A and 9B are schematic diagrams of elements of the portion illustrated in Fig. 7; Fig. 10 is a schematic diagram of elements of the portion illustrated in Fig. 7; Fig. 11 is a schematic diagram of elements of the portion illustrated in Fig. 7; and Fig. 12 is a schematic diagram of elements of the portion illustrated in Fig. 7. DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS The embodiments disclosed herein relate to an apparatus and a method for verifying a volume of fluid. The embodiments may be used with any desired fluid with suitable modifications to provide compatibility with the desired fluid, e.g. non- reactivity. The embodiments may be utilized in any suitable employment. For the sake of clarity, the embodiments are discussed with respect to their employment with an analytical instrument. The analytical instrument may be substantially similar to those disclosed in U.S. Patent No.'s 5,006,309, 5,015,157, 5,089,424, 5,120,199, Des. 332,834, 5,185,264, 5,198,368, 5,232,669, 5,244,630, 5,246,354, 5,283,178, 5,299,446 and 5,151,518. Those patents are assigned to the assignee of the present invention and the disclosures thereof are incorporated herein by reference. It is to be noted that the embodiments disclosed herein may be modified in any desirable fashion to produce still other embodiments. For instance, steps of one method may be combined, in any desired order, with steps of another method to arrive at yet another method. Fig. 1 illustrates a volume verification apparatus 10 which verifies a volume of a fluid, such as a reagent, a sample and the like. It is to be noted that the apparatus 10 verifies fluid volume without requiring an electrode or conductor to come into physical contact with the volume of fluid being verified. This property of the apparatus 10 is advantageous, i.e. to reduce fluid carryover and the like. The apparatus 10 generally comprises a sensor unit 12 , a feedback mechanism 14 and a source 16 of electrical energy. The sensor unit 12 is operatively connectable with an analytical instrument 18 for verifying a fluid volume associated with the analytical instrument 18. The sensor unit 12 is electrically connected with the feedback mechanism 14 by conductor 20. Conductor 22 electrically connects the feedback mechanism 14 with the source 16 of electrical energy such that the feedback mechanism 14 and the sensor unit 12 are supplied with electrical energy. In some embodiments, a conductor 24 is provided that electrically connects the feedback mechanism 14 to a computer 26. In other embodiments, a conductor 28 is provided which electrically connects the computer 26, in parallel, with the analytical instrument 18. In still further embodiments, the conductor 28 may directly electrically connect the feedback mechanism 14 with the analytical instrument 18, which may integrate the computer 26. The sensor unit 12 includes at least one receptacle 30 for containing a volume of fluid to be verified. The sensor unit 12 may have a configuration which corresponds to a complementary configuration on the analytical instrument 18 to provide compatibility. The feedback mechanism 14 includes structures, such as a display 32 and the like, for providing an operator with feedback indicative of the volume of fluid to be verified. The feedback mechanism may also be provided with a switch 34 for selecting electrical connection between the sensor unit 12 and the source 16 of electrical energy. The computer 26 includes memory containing and running appropriate routines to control operation of the apparatus 10 and to utilize the feedback provided by the feedback mechanism 14. Fig. 2 illustrates the sensor unit 12 in more detail. The sensor unit 12 contains at least one receptacle 30 for containing a volume of fluid to be verified and a circuit board 35. The receptacle 30 is defined by an aperture 31 on the sensor unit 12. The number of receptacles 30, as well as their disposition is dependent upon the construction of relevant portions of the analytical instrument 18. The circuit board 35 is supported in a housing 36 by suitable structures. The circuit board 35 may be accessed from an exterior of the housing 36 through panel 38 which may be removable from the housing 36. The housing 36 also comprises a port 40 for accepting the conductor 20 thereby permitting electrical connection between the circuit board 35 and the feedback mechanism 14. In one embodiment, the housing 36 is substantially rectangular having a length of about 6.5 inches, a width of about 3 inches and a height of about 0.9 inches. In the illustrated embodiment, six receptacles 30 are formed in the housing 36, however, other numbers are also possible. An exemplary receptacle 30, illustrated in Fig. 4, comprises a first conductor 44 and a second conductor 46 operatively associated with the aperture 31. In a exemplary embodiment, the first conductor 44 may be a transmitter while the second conductor 46 may be a receiver. The first conductor 44 and the second conductor 46 include, respectively, contacts 54 and 56 that permit electrical connections with the first conductor 44 and the second conductor 46. The contacts 54 and 56 allow an electromagnetic signal to be sent to or from the conductors 44 and 46, respectively. The first conductor 44 and the second conductor 46 are electromagnetically coupled such that electromagnetic signal transmission between the first conductor 44 and the second conductor 46 depends upon a substance, such as a volume of fluid and the like, operatively disposed between the first conductor 44 and the second conductor 46. By appropriately consulting electromagnetic signal transmission between the conductors 44 and 46, an operator can determine or verify a volume of fluid contained within the receptacle 30, i.e. the volume of fluid dispensed by the analytical instrument 18. An exemplary construction of the conductors 44 and 46 is illustrated in Figs. 5 and 6. The conductors 44 and 46 are formed from pieces or sheets of a suitable metal, such as copper and the like. The conductors 44 and 46 are formed or curved in a substantially semicylindrical shape. In one embodiment, the conductors 44 and 46 define a diameter of about 0.5 inches and have a height of about 0.5 inches and a thickness of about 0.01 inches. The contacts 54 and 56 depend from the substantially semicylindrical bodies of the conductors 44 and 46. The contacts 54 and 56 are about 0.08 inches wide and about 0.125 inches long. As shown in Fig. 5, the first conductor 44 is offset from the second conductor 46 by a gap 60 measuring about 0.05 inches. Some embodiments include a third conductor 48 and a fourth conductor 50, operatively associated with the first conductor 44 and the second conductor 46, respectively, to reduce electromagnetic interference received by the first conductor 44 and the second conductor 46. In these embodiments, an insulator 52 may be disposed electrically between the first conductor 44 and the third conductor 48 and electrically between the second conductor 46 and the fourth conductor 50. In some embodiments, the third conductor 48 and the fourth conductor 50 may be integrated as a single conductor. The aperture 31 associated with a particular receptacle 30 provides support for the conductors 44 through 50 and the insulator 52. In some embodiments, the conductors 44 through 50 and the insulator 52 may be removed from the associated aperture 31 for cleaning, replacement, etc. In still further embodiments, a liner 58 may be disposed within the aperture 31 at a side thereof opposite to the side thereof adjacent the conductors 44 and 46. The liner 58 may be made from a material that is compatible, e.g. non-reactive, with the fluid, a volume of which is to be verified by the apparatus 10. In some embodiments, the liner 58 may be removable for replacement, cleaning, etc. In other embodiments, the liner 58 may be a coating or other treatment applied to the aperture 31. In still other embodiments, the liner 58 may be provided on an inner surface of a removable insert which is removably connectable with the aperture 31. The insert may be made of a suitable, non-electrically conducting polymer, such as Monsanto Lustran 248. In one embodiment, the liner 58 comprises a low friction substance, such as a silicone and the like, to reduce a meniscus curvature formed by a fluid disposed within the liner 58 and thereby within the receptacle 30. In an exemplary embodiment, the liner 58 comprises a polymeric coating, such as dimethyl- hydroxyl-alkylene-oxide-methyl-siloxane (United Chemical Technologies #PS835, Bristol, PA). If a removable insert were used, then, in one embodiment, at least one insert is placed in a mixture of silicone or about 2.0 grams of dimethyl-hydroxyl- alkylene-oxide-methyl-siloxane and about 98 grams of trichlorotrifluoroethane (Baxter Scientific Products MS-80902, Sunnyvale, CA) . The insert is removed from the mixture and drained. The insert is dried at about 80 degrees Celsius for about 2 hours. The insert is rinsed. Then, the insert is placed in a bath of distilled water for about 5 minutes and the insert is drained. The insert is dried again at about 80 degrees Celsius for about 2 hours. The liner 58 and/or the insert is substantially cylindrical, having an open end and a closed end, with an inner diameter of about 0.51 inches, an outer diameter of about 0.59 inches and a height of about 0.56 inches. An exemplary embodiment of electronic structure or circuit 61 associated with the sensor unit 12 is illustrated generally in Fig. 7, with detailed electronic schematic diagrams presented in Figs. 8 through 12. An oscillator 62 generates a periodic electrical signal substantially in the radio frequency range. In an exemplary embodiment, the oscillator 62 generates a substantially square wave of about 1.58 Volts peak-to-peak with an approximate 3.6 Volts (DC) offset at a frequency of about 100 kHz. An exemplary embodiment of the oscillator 62 is shown in Figs. 9A and 9B. The oscillator 62 is electrically connected to a filter 64 (bandpass) with a passband of about 60 kHz centered at about 100 kHz. The filter 64 converts the periodic signal from the oscillator 62 to an electrical signal of substantially similar frequency but of approximately sinusoidal form. The construction of the filter 64 is shown in Figs. 9A and 9B. The filter 64 is electrically connected to an amplifier 66, also shown in detail in Figs. 9A and 9B, which increases an amplitude of the electrical signal by a factor of about 7.5, yielding an approximately 11.0 Volt peak-to-peak (AC) signal of about 100 kHz. Electrical output of the amplifier 66 is electrically connected to a switch 68 (Fig. 10) , such as a multiplexer and the like, which directs the signal to the conductor 44 associated with at least one receptacle 30 (Fig. 4) or to one of two reference resistor circuits 70. Electromagnetic coupling between the conductor 44 and the conductor 46, due at least in part to electrical transmissive properties of the fluid, causes an electrical signal to be received by the conductor 46. The amplitude of the electrical signal received by the conductor 46 is a function of fluid volume within the receptacle 30. The reference resistor circuits 70 may be voltage dividers, such as an about 10 kΩ resistor and an about 700 Ω resistor electrically connected in series, to yield an output voltage that is a known and substantially constant fraction of an input voltage. The electrical signal received by the conductor 46 is electrically connected via a buffer 72 (Fig. 12) to the switch 68. The switch 68 electronically connects the conductor 46 from the selected receptacle 30 to the remainder of the circuit 61. The switch 68 may be a dual multiplexer with an address input 74 (Fig. 10) from the feedback mechanism 14 or may be two multiplexers controlled so that both the conductor 44 and the conductor 46 associated with a given receptacle 30 are connected to the circuit 61 simultaneously. The electrical signal from the switch 68 is electrically connected via an amplifier 76 to a filter 78 (bandpass) . The amplifier 76 has a gain of about 20. The filter 78 has a passband of about 60 kHz centered at about 100 kHz. The filter 78 is electrically connected with a buffer 80. The output of the buffer 80 feeds into a rectifier 82 (full wave) and an integrator 84 (active) . Details of the amplifier 76, the filter 78 and the buffer 80 are illustrated in Figs. 9A and 9B. Details of the rectifier 82 and the integrator 84 are shown in Fig. 11. The output of the integrator 84 is a substantially steady direct current voltage which is approximately linearly related to an amplitude of the electrical signal received by the conductor 46. This output is indicative of a volume of fluid disposed in the selected receptacle 30. This direct current voltage is applied to an amplifier 86 (Fig. 11) , with a gain of about 5, that imposes an adjustable offset of the order of about 8.8 Volts (DC). The offset, controlled by an adjustable reference voltage circuit 88 (Fig. 11) , is set prior to use of the apparatus 10 by substantially filling all of the associated receptacles 30 with about 350 μl of a fluid, such as degassed, deionized water and the like, and adjusting the offset so that all receptacles 30 yield an output voltage of about 0.0 Volts (DC) . The output of the amplifier 86 is an electrical signal that varies between about 0 Volts (DC) and about +5 Volts (DC) . The output of the amplifier 86 is transmitted along conductor 90 to the feedback mechanism 14. The feedback mechanism 14, shown in Fig. 8, generally contains an analog to digital converter 92 which, in this embodiment, is a 17 bit converter with sign. The converter 92 converts the output voltage from the sensor unit 12 to a numerical value. The feedback mechanism 14 also includes the display 32 to display the numerical value from the converter 92 or another numerical value. The feedback mechanism 14 also includes a energy supply unit 94 to receive electrical energy from the source 16 of electrical energy to supply electrical energy to the components of the feedback mechanism 14 and the sensor unit 12. The feedback mechanism 14 also may contain data processing circuitry 96 (such as a microcontroller and the like) to control operation of the apparatus 10, an input/output circuit 98 which acts as an interface between the feedback mechanism 14 and the sensor unit 12, and communication circuitry 100 (such as an RS-232 serial transfer device and the like) to transmit data to the computer 26 or some other device for further processing, evaluation, or storage. In this embodiment, the microcontroller 96 sends a three- bit binary address signal via the input/output circuit 98 to the sensor unit 12 that corresponds to the desired receptacle 30 or reference resistor circuit 70. The three-bit binary address signal is applied to the address lines 74 of the switch 68. The electrical signal indicative of the volume of fluid disposed in the selected receptacle 30 is applied to the analog to digital converter 92. The analog to digital converter 92 produces a digital numerical signal which is transmitted via the communication device 100 to the computer 26 and may also be displayed on the display 32. With the construction of an embodiment of an apparatus for verifying a volume of a fluid being disclosed in detail, an embodiment of a method of verifying a volume of fluid or operation of the apparatus 10 will now be disclosed. For the sake of clarity, the methods will be discussed in relation to the apparatus 10. However, the methods may be employed with any suitable mechanism. A plurality of methods are detailed. In general, one method of checking or verifying a volume of fluid comprises the following steps. The apparatus 10 is positioned with respect to the analytical instrument 18 such that a receptacle 30 is operatively connected with a fluid dispense nozzle on the instrument 18. The operative connection between the receptacle 30 and the dispense nozzle is such that fluid exiting the dispense nozzle enters the receptacle 30. Fluid exits the dispense nozzle and enters the receptacle 30. An electrical signal is applied to the conductor 44. An electrical signal is created in the conductor 46 responsive to the electrical signal applied to the conductor 44. The electrical signal created in the conductor 46 is monitored. Because an amplitude of or a voltage associated with the electrical signal created in the conductor 46 is related to the volume of fluid present in the receptacle 30, appropriate monitoring of the electrical signal created in the conductor 46 provides an indication of the volume of fluid within the receptacle 30. The apparatus 10 provides feedback to an operator or a computer corresponding to the volume of fluid within the receptacle 30. More specifically, the following methods can be used along with the apparatus 10, or an equivalent device, to verify a volume of fluid. System calibration The apparatus 10 may be calibrated by performing the following method steps. 1. Using a mass balance, determine a volume of fluid dispensed by a precision test pump. In one embodiment, the volume of fluid measures about 50 μl. The test pump may be a valveless metering pump such as that described in U.S. Patent No. 5,246,354. That patent is assigned to the assignee of the present application. The disclosure of that patent is incorporated herein by reference. The pump should be primed prior to use. 2. Install liners 58 in apertures 31 in the sensor unit 12 and rinse the liners 58. 3. Fill all receptacles 30 with about 350 μl of degassed, deionized water. 4. Adjust the reference circuit 88 so that the digital output of the analog to digital converter 92 for all channels is greater than about -45,000. 5. Make about 6 additions, measuring of about 50 μl each, of degassed, deionized water to each receptacle 30 from the precision test pump. While making these additions, monitor the output of the analog to digital converter 92. 6. Calculate the average change in output of the analog to digital converter 92 for each addition of degassed, deionized water to each of the receptacles 30. The slope is approximately equal to the difference in counts between a period following the initial dispense of about 350 μl of water and a period after the about 6 additional dispenses of water multiplied by 50 and divided by the actual volume dispensed (6 times the precision test pump dispense volume) . This slope may be used for volume verification and may be stored in an appropriate memory, such as a RAM, a ROM, an EPROM, a SRAM and the like, which may be located in the feedback mechanism 14. Volume verification To verify a volume of fluid dispensed by a pump in an analytical instrument 18 with the apparatus 10, the apparatus 10 is calibrated as discussed above. After calibration, the following steps are performed. 1. Install new liners 58 in the sensor unit 12. 2. Prime the dispense pump by dispensing fluid from the dispense pump at least about 10 times. 3. Make available the slope data, determined during calibration, for the sensor unit 12. 4. Add about 350 μl of degassed, deionized water to each of the receptacles 30. 5. Make 6 additions of about 50 μl each of degassed, deionized water to each receptacle 30 from the precision test pump. While making these additions, monitor the output of the analog to digital converter 92. 6. For each dispense, calculate the volume of the dispensed water by multiplying the difference in counts from the analog to digital converter 92 before and after the dispense by 50 μl and by dividing by the slope determined in the calibration process. 7. Calculate the mean and the coefficient of variation of the dispensed volume. In an example of the above method steps, a test pump was adjusted to dispense about 47.5 μl of degassed, deionized water, as measured by a mass balance. In 12 verification runs, the average error detected by the apparatus 10 was about 0.21 μl or about 0.42 percent (with a range of about 0.0 μl to about 0.63 μl or substantially within the range of about 0.0% to about 1.26%). The coefficient of variation of dispensed volume readings within the twelve runs averaged about 0.88 percent (with a range of about 0.18% to about 1.95%). Automated reading An example of software that may be used to operate or process information from the apparatus 10 is presented at the end of this discussion and preceding the claims. This software, written in structured BASIC, may be executed by the computer 26 which may or may not be integrated with the instrument 18. The routine performs the following steps. Relevant portions of the routine are flagged by STEP and the number of the step, which corresponds to the numbers below. 1. Establish communication via the communication circuit 100 between the computer 26 that is executing the software routine and the feedback mechanism 14. 2. Select a receptacle 30. A data packet indicating this receptacle 30 is transmitted to the feedback mechanism 14. The feedback mechanism 14 converts this data packet to a three- bit digital address signal that is transmitted to the sensor unit 12 via the address lines 74. 3. The digital output from the analog to digital converter 92 of the feedback mechanism 14 is received by the computer 26 via the communication circuit 100. This step is executed in the subroutine entitled "RCV, " which contains two steps. 3a. Each serial data packet, in one embodiment one byte representing an ASCII character, from the communications circuit 100 of the feedback mechanism 14 is received as a character value. 3b. The data received from the communication circuit 100 is appended to preceding data packets to form a character string. The signal normally consists of a series of ASCII characters, the first eight of which are the decimal value of the analog to digital converter 92 output and the ninth which is the decimal value of a channel number, which corresponds to a location on the analytical instrument 18. The seven most significant digits of the analog to digital converter 92 output are used in volume calculations. 4. The character string is converted to two numerical values representing the analog to digital converter 92 output and the channel number. 5. The volume of dispensed fluid is displayed and/or printed. Anf.oi--af.ed verification of dispense volume of fluid A software routine that may be used with an embodiment of an apparatus to verify a volume of fluid is presented before the claims. This software routine, written in structured BASIC, may be executed on a computer 26. This routine incorporates the routines described above to determine output of the analog to digital converter 92 with additional routines included to execute the following steps. 1. Communication is established via a serial data link between the computer 18 that is executing the software routine and the feedback mechanism 14. 2. The value of the calibration slopes for the various receptacles 30 are read from a preexisting data file. This data file was created using a procedure similar to that described with respect to System calibration. 3. Communication is established between the computer 26 that is running the software routine and the analytical instrument 18. 4. A receptacle 30 is selected for performing verification of a dispensed volume of fluid. This selection may be made by the operator directly or by a routine associated with the analytical instrument 18. 5. The output of the analog to digital converter 92 is monitored by the routine during an initial dispense of about 450 μl of fluid into the receptacle 30. The output values are read using the routines described above. 6. The output of the analog to digital converter 92 is allowed to stabilize. 7. Readings from the reference resistor circuits 70 are taken. 8. The output of the analog to digital converter 92 is monitored by the routine during dispense of about 50 μl of fluid into the receptacle 30. There may be a plurality of such dispenses. The output values are read using the routines described above, located in subroutines "DBLREAD" and "RCV. " 9. The output of the analog to digital converter 92 is allowed to stabilize. 10. The numerical value of the analog to digital converter 92 output is stored in suitable memory, such as a RAM, a ROM, an EPROM, a SRAM and the like. 11. Steps 8-10 are repeated for the desired number, such as 6, of dispenses of fluid in the selected receptacle 30. 12. Readings from the reference resistor circuits 70 are taken. 13. The difference in the analog to digital converter 92 output, representing the volume of fluid associated with each dispense, is calculated. 14. The mean dispense volume and standard deviation of the dispense volumes are calculated, along with the deviation from the mean for each individual dispense. This step is executed within the subroutine "CALCULATE. " 15. For each of the dispenses performed and verified, the volume of the dispense of fluid is calculated, is printed and/or is displayed and is stored in a record file. 16. The mean and standard deviation of the dispensed volume for all dispenses are printed. 17. The mean and coefficient of variation are compared to a predetermined "pass" criteria. The methods discussed herein may be controlled or executed manually or by a controller, such as the computer 26 and the like, or may be controlled by software residing on and running within memory comprising the analytical instrument 18. By verifying a dispensed volume of fluid, an implicit test of the fluid delivery system, comprising a fluid source, a pump, a fluid conveying conduit, a dispense nozzle, etc., is made. Thus, the apparatus and method described herein may give an operator an indication of status of elements of a fluid system associated with the analytical instrument 18. A listing of the above-discussed software routines follows presently. The STEP numbers correlate to the numbers used in the above discussion. ISTEP 1 I i ******************INITIALIZE METER INTERFACE******************* OPEN "COMl:9600,N,8,l,BIN,CD0,CS0,DS0,RS,TB256,RB32000" FOR RANDOM AS #1*RF METER SERIAL CONNECTION CALL Delay (300) x = INP(&H3FC) ' set CTS and DTR x = x OR 3 OUT &H3FC, x DBLREAD: • ********inner read loop VIEW PRINT 14 TO 23 LOCATE (14 + j) , 1 IF > 0 THEN PRINT USING " ## "; j; STEP 2 SELECT CASE Chan CASE 1: PRINT #1, "M4" CASE 2: PRINT #1, "Ml" CASE 3: PRINT #1, "M3 " CASE 4: PRINT #1, "MO" CASE 5: PRINT #1, "M5" CASE 6: PRINT #1, "M2" END SELECT CALL RCV CALL Delay (READDEL) 'delay for apres mux PRINT #1, "R" STEP 3 CALL RCV SS = MID$(sbuff$, 3, 10) + S = VAL(LEFT$(S$, 8) ) / 32 oldchana = chana I STEP 4 chana = VAL (LEFTS (S$, 7) chnum = VAL(MID$(S$, 9, 1)) diffa = oldchana / 32 - S ISTEP 5 - . . I IF j > 0 THEN PRINT USING " ###.## uL" ; (ABS ( (rdata (Chan, j - 1, 1) - chana) / 32) ) * 50 * 32 / slope (chan) ; RETURN SUB RCV i *********************RECEIVE DATA FROM METER******************* SCOUNT = (VAL (RIGHTS (TIMES, 2))) + 3 IF SCOUNT > 59 THEN SCOUNT = SCOUNT - 60 A$ = " " sbuff$ = DO IF LOC(l) > 0 THEN ALASTS = A$ I STEP 3a AS = INPUTS (1, #1) JSTEP 3b IF NOT (AS = CR$) THEN sbuffS = sbuff$ + A$ END IF SCOUNT2 = VAL (RIGHTS (TIMES, 2)) IF SCOUNT = SCOUNT2 THEN PRINT PRINT "***ERROR*** METER NOT RESPONDING - Check cables and power" PRINT BEEP IF RMX THEN CALL sendrmx(14) 'ESCAPE (HEX 'E") SYSTEM END IF IF LFFLAG > 0 AND A$ = LF$ THEN A$ = ">" LOOP WHILE NOT (A$ = ">") x = LOC(l) IF x > 256 THEN PRINT "X>256" END SUB RFAUTO.Bas => RMX=J RFCALBAS => RMX=0 RFBENCH.BAS => BENCH=-1 takes .DAT files from PRISM CDS A/D DATA CAPTURE, finds the dispense point by looking at point-to-point differences, calculates the mean of the last 20 points prior to dispense, and stores results in VOL.DAT COPYRIGHT ABBOTT LABORATORIES 1994 AUTHOR: J Kotlarik This version uses a BIOS SW INTERRUPT for machine-independant timing. Note: To use CALL INTERRUPT, you must load the Quick library QB.LIB with QuickBASIC. The program also uses the QB.BI header file. If compiling fails to find QB.LIB, use the following commands from the 2nd QB45 (UTILS) disk: UNPACK QB.LI$ QB.LIB Use the following command line when you start QB : QB RFAUTO/L QB ' Include header file for INT860LD, etc. • $INCLUDE: 'QB.BI' DECLARE SUB Delay (counts!) DECLARE SUB BENCHDISP 0 DECLARE SUB DISPTRAY (chan!) DECLARE SUB GETREFS (LOWREF$, HIGHREF$) DECLARE SUB RCV 0 DECLARE SUB sendrmx (rmxsnd) DECLARE SUB getrmx () DECLARE SUB GETNEWKEY (NEWKEY$) DECLARE SUB TESTREF 0 COMMON SHARED sbuff$ COMMON SHARED CR$ COMMON SHARED LF$ COMMON SHARED ESC$ COMMON SHARED BS$ COMMON SHARED diffa, diffb COMMON SHARED RMX COMMON SHARED Raw COMMON SHARED rmxdatardy COMMON SHARED rmxrcv COMMON SHARED LFFLAG COMMON SHARED NEWKEYS COMMON SHARED DEBUG COMMON SHARED READDEL COMMON SHARED PPORTOUT% COMMON SHARED PPORTIN% 'Rev$ = "1.0" '1/19/94 Program creation 'Rev$ = "1 J " '2/17/94 Added Statistics and auto-linear range detection 'Rev$ = "1.2" "6/16/94 Interfaced to Eutechnics Meter/Controller 'Rev$ = "1.3" '8/12/94 Auto-prime and auto-dispense detect "Rev$ = "1.4" J 0/21/94 RMX and machine id "Rev$ = "1.5" '11/3/94 rewrite comm RMX and machine id "Rev$ = "1.6" '11/22/94 Get from BIOS PP data and status reg address "Rev$ = "1.7" J 1/29/94 Allow Parallel comm with benchtop fixture Rev$ = "1.8" J 2/03/94 Save and read slopes from meter DIM rdata(6, 21 , 3) DIM ref(6, 2, 2) DIM rarray(21 , 4) DIM slope(6) DIM PUMPLIST$(10) CR$ = CHR$(13): ESC$ = CHR$(27) LF$ = CHR$(10): BS$ = CHR$(8) DEBUG = 0 'IF DEBUG = -1 THEN ALL TEST DATA DISPLAYED ELSE = 0 RMX = 0 'IF RMX = 0 THEN PRISM RMX - PC PARALLEL PORT DISABLED -1 -> ENABLED BENCH = 0 'IF BENCH = 0 THEN PARALLEL COM DISABLED -1 -> ENABLED VALIDATE = 1 GROUP.SIZE = 20 PUMPLIST$(1) = "MP" PUMPLIST$(2) = "SD" PUMPLIST$(3) = "PR" PUMPLIST$(4) = "PW" PUMPLIST$(5) = "CO" PUMPLIST$(6) = "CW" PUMPLIST$(7) = "AC" PUMPLIST$(8) = "SA" PUMPLIST$(9) = "SM" ' GET LPT1 PORT AD DR ESS' DEF SEG = &H40 PPORTOUT% = PEEK(&H8) + (PEEK(&H9) * 256) PPORTIN% = PPORTOUT% + 1 DEF SEG rerun: CLS VIEW PRINT 1 TO 2 IF RMX THEN PRINT " ABBOTT PRISM RF VOLUME VALIDATION REV. "; ELSE PRINT " ABBOTT PRISM RF VOLUME VALIDATION TRAY CALIBRATION REV. "; END IF PRINT Rev$ PRINT " Copyright Abbott Laboratories 1994"; Delay (15000) slope = 20 SAMPLE = 0 ENDCNT = 6 'number of shots READDEL = 10500 PRIMESTART = 100 'PRIME START READ-TO-READ DIFFERENCES PRSTARTCNT = 3 'PRIME START NUMBER OF REPS NEEDED TO STABILIZE PRIMEDIFF = 1.5 'PRIME SETTLE READ-TO-READ DIFFERENCES PRIMEREPS = 3 'PRIME SETTLE NUMBER OF REPS NEEDED TO STABILIZE DIFF = .9 'NORMAL DISPENSE READ-TO-READ DIFFERENCES DIFFREPS = 3 'NORMAL DISPENSE NUMBER OF REPS NEEDED TO STABILIZE 'check for a command line parameter containing the filename to process IN ITIALIZE M ETER I NTER FACE * STEP I^ OPEN ϋM1 :δδδδ,N,δ,1 ,BIN,ϋ-3δ,f iiδ > Dtiδ,Rii,TB25δ,RB5-iδδδ H k WAN UM A^ MW 1 METER SERIAL CONNECTION CALL Delay(300) x = INP(&H3FC) ' set CTS and DTR x = x OR 3 OUT &H3FC, x PRINT #1 , ESC$; CALL RCV ON ERROR GOTO nosbpe: FOR i = 1 T0 6 PRINT #1 , "G" + LTRIM$(RTRIM$(STR$(i))) + CR$ STEP 2 ALLRcV TEMPS = LEFT$(sbuff$, LEN(sbuff$)) TEMP$ = LTRIM$(RTRIM$(TEMP$)) slope(i) = VAL(TEMP$) IF slope(i) = 0 THEN slope(i) = 5000 CALL RCV NEXT GOTONOMACHINEID continueinit: VIEW PRINT 25 TO 25 PRINT " -For Investigational Use Only-"; VIEW PRINT 1 TO 2 LOCATE 2, 1 PRINT SPACE$(79); IF NOT RMX THEN LOCATE 2, 3 PRINT "PRISM NUMBER " + MACHINEIDS + " Is this correct? (Y/N or ENTER) >"; DO CALL GETNEWKEY(NEWKEY$) LOOP WHILE NEWKEYS = "" NEWKEYS = UCASE$(NEWKEY$) IF NOT (NEWKEYS = "Y" OR NEWKEY$ = CR$) THEN GOTO newmachineid END IF ON ERROR GOTO errorhandler IF COMMANDS <> "" THEN L = INSTR(COMMAND$, " ") IF L > 0 THEN inputfilenameS -- LEFT$(COMMAND$, L - 1) slopeS = RIGHT$(COMMAND$, LEN(COMMANDS) - L) slope = VAL(slopeS) ELSE inputfilenameS = COMMANDS slope = 0 END IF END IF RMX Parallel Port INIT Start' [STEP 3 VIEW PRINT ό Tδ έέ LOCATE 4, 1 IF RMX THEN PRINT "Waiting for PRISM RMX Handshake..."; ' init port Set READY high here - low at remote INVERTED SIGNAL BIT 4 OUTPUT to BIT 7 INPUT ' SEND 5 THEN A CONTINUOUSLY UNTIL 5 AND A BOTH RECEIVED FROM RMX ' AFTER BOTH 5 AND A RCVD, SENDS 15H THEN 1 AH UNTIL READY FROM RMX RMX5 = 0 RMXA = 0 STATUS = 0 DO OUT PPORTOUT%, &H5 OR STATUS FOR x = 1 TO 20 NEWRMX = INP(PPORTIN%) STATUSRMX = NEWRMX AND &H80 NEWRMX = (NEWRMX AND &H78) / 8 'CORRECT FOR DATA SHIFT UP 3 BITS BY LAPLINK CABLE IF NEWRMX = 5 THEN RMX5 = -1 IF NEWRMX = &HA THEN RMXA = -1 NEXT OUT PPORTOUT%, &HA OR STATUS FOR x = 1 TO 20 NEWRMX = INP(PPORTIN%) STATUSRMX = NEWRMX AND &H80 NEWRMX = (NEWRMX AND &H78) / 8 'CORRECT FOR DATA SHIFT UP 3 BITS BY LAPLINK CABLE IF NEWRMX = 5 THEN RMX5 = -1 IF NEWRMX « &HA THEN RMXA = -1 NEXT IF ((RMX5 <> 0) AND (RMXA <> 0)) THEN STATUSOUT = &H10 LOOP WHILE ((RMX5 = 0) OR (RMXA = 0) OR (STATUSRMX = &H80)) 'SEND READY OUT PPORTOUT%, &H10 ' Wait for remote READY (low here - high at remote) DO r = INP(PPORTIN%) r = r AND &H80 LOOP WHILE r <> 0 'loop until low PRINT " Received!"; SLEEP 1 VIEW PRINT 1 TO 2 CLS (2) LOCATE 1 , 1 IF RMX THEN PRINT " ABBOTT PRISM RF VOLUME VALIDATION REV. "; ELSE PRINT " ABBOTT PRISM RF VOLUME VAUDATION TRAY CALIBRATION REV. "; END IF PRINT Rev$; END IF ' * * ** * * " RMX Parallel Port INIT End ** * * ** * * CALL DISPTRAY(O) IF NOT RMX THEN logfilenameS = MACHINEIDS + LEFT$(DATE$, 2) + MID$(DATE$, 4, 2) + ". ' Get the run number this setup w/today's date count = 1 DO counts = LTRIM$(STR$(count)) IF count < 10 THEN counts = "0" + counts OPEN logfilenameS + "V + counts FOR APPEND AS #11 IF LOF(11) = O THEN logfilenameS = logfilenameS + "V" + counts EXIT DO ELSE count = count + 1 END IF CLOSE #11 LOOP UNTIL count > 36 runnumber = count CLOSE #11 VIEW PRINT 1 TO 2 LOCATE 2, 1 PRINT SPACE$(79); LOCATE 2, 1 PRINT " PRISM " + MACHINEIDS + " File-" + logfilenameS + " DATES; VIEW PRINT 14 TO 23 END IF S E LECT W E LL PA I R ' CD VIEW PRINT 3 TO 4 CLS (2) PRINT STEP 4 IF RMX THEN PRINT " ENTER TEST INFORMATION ON PRISM "; ELSE PRINT " SELECT WELL PAIR (1)=1 , 2 (3)=3,4 (5)=5,6 ENTER [1 ,3,5]>"; END IF x = 0 DO CALL GETNEWKEY(NEWKEYS) 'RMX Parallel Port WELL PAIR Start * IF RMX THEN getchan: CALL getrmx IF rmxrcv o 6 THEN GOTO getchan'LOOK FOR CHANNEL NUMBER SELECT COMMAND (7) DO CALL getrmx x = rmxrcv 'Get channel number (1 -6) LOOP WHILE x = 0 channelnumber = x 'PRINT " Channel "; channelnumber getpumpno: CALL getrmx IF rmxrcv <> 7 THEN GOTO getpumpno 'LOOK FOR PUMP NUMBER SELECT COMMAND (6) DO CALL getrmx x = rmxrcv 'Get pump number (1-9) LOOP WHILE x = 0 PUMPNUMBER = x "PRINT " Pump # "; pumpnumber getprid: CALL getrmx IF rmxrcv <> 8 THEN GOTO getprid "LOOK FOR PRISM UNIT ID NUMBER COMMAND (8) DO CALL getrmx x = rmxrcv 'Get PRISM Unit ID number digit 1 of 3 (0-9) LOOP WHILE (rmxdatardy = 0) prismnol = x DO CALL getrmx x = rmxrcv "Get PRISM Unit ID number digit 2 of 3 (0-9) LOOP WHILE (rmxdatardy = 0) prismno2 = x DO CALL getrmx x = rmxrcv 'Get PRISM Unit ID number digit 3 of 3 (0-9) LOOP WHILE (rmxdatardy = 0) prism no3 = x IF prismno3 = 10 THEN prismno3$ = "" ELSE prismno3$ = STR$(prismno3) IF prismno2 = 10 THEN prismno2$ = "" ELSE prismno2$ = STR$(prismno2) IF prismnol = 10 THEN prismnol $ = "" ELSE prismnol $ = STR$(prismno1) prismidS = LTRIM$(prismno1$) + LTRIM$(prismno2$) + LTRIM$(prismno3$) idcnt = LEN(prismidS) IF idcnt = 1 THEN prismidS = "00" + prismidS IF idcnt = 2 THEN prismidS = "0" + prismidS prismid = VAL(prismidS) 'PRINT " PRISM " + prismidS MACHINEIDS = prismidS 10 'create filename for this run logfilenameS = MACHINEIDS + LTRIM$(STR$(channelnumber)) + LEFT$(DATE$, 2) + MID$(DATE$, 4, 2) + "." 15 ' Get the run number this setup w/today's date count = 1 DO 20 counts = LTRIM$(STR$(count)) IF count > 9 THEN counts = asc$(count + &H31) 'count >9 -> "A-Z" OPEN logfilenameS + PUMPLISTS(PUMPNUMBER) + counts FOR APPEND AS #11 25 IF LOF(1 1) = 0 THEN logfilenameS = logfilenameS + PUMPLISTS(PUMPNUMBER) + counts EXIT DO ELSE count = count + 1 30 END IF CLOSE #11 LOOP UNTIL count > 36 runnumber = count 35 CLOSE #11 VIEW PRINT 1 TO 2 LOCATE 2, 1 40. PRINT SPACE$(79); LOCATE 2, 1 PRINT " PRISM " + MACHINEIDS + " File-" + logfilenameS + " Channel "; channelnumber; " " + PUMPLISTS(PUMPNUMBER) + " Pump " + DATES; 45 VIEW PRINT 14 TO 23 getcupno: x = 0 CALL getrmx IF rmxrcv <> 1 THEN GOTO getcupno 'LOOK FOR well-pair SELECT COMMAND (1) DO CALL getrmx x = rmxrcv 'Get well pair (1 ,3,5) LOOP WHILE x = 0 cupnumber = x END IF * ** "" * ** RMX Parallel Port WELL PAI R End LOOP WHILE (NEWKEYS = "") AND (x = 0) IF x = 0 THEN x = VAL(NEWKEYS) LOOP WHILE NOT (x = 1 OR x = 3 OR x = 5) VIEW PRINT 14 TO 23 chan = x chanaS = asc$(x) chanbS = asc$(x + 1 ) " START OF CHANNEL DATA COLLECTION * PRINT #1 , ESCS; CALL RCV chanaS = LTRIM$(STR$(chan)) chanbS = LTRIM$(STR$(chan + 1)) stub$ = "D+ " + chanaS + " " + chanbS PRINT #1 , stubS + CR$ CALL RCV * ** * * TRAY STABI LITY CHECK * CALLTESTREF VIEW PRINT 4 TO 5 CLS (2) PRINT IF (RMX OR BENCH) THEN PRINT " WAIT FOR PRISM TO PRIME WELLS ELSE PRINT " FILL CUPS " + chanaS + " and " + chanbS + " WITH 350 uL FLUID THEN WAIT FOR BEEP WHILE READS STABILIZE"; BEEP END IF CALL DISPTRAY(chan) VIEW PRINT 14 TO 23 LOCATE 23, 1 rmxprime = 0 dispoff = -1 BENCH IF BENCH THEN CALL BENCHDISP CALL BENCHDISP END IF BENCH GOSUBDBLREAD BENCH IF BENCH THEN CALL BENCHDISP CALL BENCHDISP END IF BENCH dispoff = 0 ' DISPLAY A,B CUP READS WHILE FILLING' 'WHILE INKEYS = "" ' GOSUB DBLREAD 'get a,b adc values DIFFCNT = 0 ' LOOK FOR DISPENSE DO GOSUB DBLREAD ' * RMX Parallel **** IF RMX AND (rmxprime = 0) THEN DO CALL GETNEWKEY(NEWKEY$) CALL getrmx LOOP WHILE rmxrcv <> 2 'look for prime start IF DEBUG THEN PRINT " Received PRISM Start Prime Command" rmxprime = -1 END IF RMX Parallel •• * •• * ••• . •• CALL GETNEWKEY(NEWKEYS) IF (ABS(diffa) > PRIMESTART) OR (ABS(diffb) > PRIMESTART) THEN DIFFCNT = DIFFCNT + 1 ELSE DIFFCNT = 0 ' DIFFCNT = 5 "** ....*.. BENCH IF BENCH THEN CALL BENCHDISP END IF ' BENCH LOOP WHILE DIFFCNT < PRSTARTCNT DIFFCNT -- 0 • " • ""LOOK FOR SETTLING AFTER DISPENSE DO GOSUB DBLREAD 'get a,b adc values ISTEP 6 IP AB5(dϊffa) < PRIMtDIFF AND ABS(diffb) < PRIMEDIFF THEN DIFFCNT = DIFFCNT + 1 ELSE DIFFCNT = 0 IF DIFFCNT > PRIMEREPS THEN EXIT DO CALL GETNEWKEY(NEWKEYS) LOOP WHILE NEWKEYS = "" ' •••• GET REFERENCE READINGS' PRINT #1, ESCS; CALL RCV STEP 7 CALL GETREFS(startlow$, statlhιgh$) ref(chan, 1, 1) - VAL(LEFT$(startlow$, 7)) ref(chan, 2, 1) = VAL(LEFT$(starthigh$, 7)) PRINT #1, ESCS; CALL RCV " *** GET READINGS OF 50 uL DISPENSES ** FORj = 0TOENDCNT VIEW PRINT 4 TO 5 IFj>0THEN CLS (2) IF (RMX OR BENCH) THEN PRINT " PRISM NOW DISPENSING"; ELSE PRINT ; " DISPENSE"; PRINT " 50 uL INTO CUPS " + chanaS + " AND " + chanbS; IF (RMX OR BENCH) THEN PRINT " - PLEASE WAIT" ELSE PRINT " THEN WAIT FOR BEEP WHILE READS STABILIZE" PRINT" DISPENSE NUMBER ";j; LOOK FOR DISPENSE DO [STEP 8 1 GOSUBDBLREAD CALL GETNEWKEY(NEWKEYS) LOOP WHILE ABS(diffa) < DIFF AND ABS(diffb) < DIFF END IF DIFFCNT = 0 '" • ""LOOK FOR SETTLING AFTER DISPENSE DO GOSUB DBLREAD 'get a,b adc values IF j = 0 THEN GOSUB DBLREAD IF j = 0 THEN GOSUB DBLREAD: EXIT DO STEP 9 IF AB5(ditta) < DIFF AND ABS(ditib) < DIFF THEN DIFFcNT -. DIFFCNT + . EL5E DIFFCNT -.' o IF DIFFCNT = DIFFREPS THEN EXIT DO CALL GETNEWKEY(NEWKEYS) LOOP WHILE NEWKEYS = "" 'SAVE READ STEP 10 rdata(chan, j, 1) = chana rdata(chan + 1 , j, 1 ) = chanb • PRINT CHR$(7); BELL BEEP PRINT CALL Delay(500) DO LOOP WHILE INKEYS o "" WAIT FOR ANY ECHO ' R M X Paral le l IF RMX THEN CALL sendrmx(1) 'valid read ' R MX Para ll e l * DO CALL getrmx LOOP WHILE rmxrcv < 3 OR rmxrcv > 4 'look for dispense start IF DEBUG THEN PRINT " Received PRISM Start Dispense Command" rmxprime = -1 RMX Parallel END IF RMX Parallel BENCH IF BENCH THEN CALL BENCHDISP END IF ' ***** BENCH 'end of outer read loop GET REFERENCE READINGS' VIEW PRINT 3 TO 5 CLS (2) ISTEP 12 CALL GETREFS(startlow$, starthighS) ref(chan, 1, 2) = VAL(LEFT$(startlow$, 7)) ref(chan, 2, 2) = VAL(LEFT$(starthigh$, 7)) ΕND OF CHANNEL DATA COLLECTION VIEW PRINT 1 TO 25 CLS FOR j = 0 TO ENDCNT IF j > 0 THEN rdata(chan, j, 3) = rdata(chan, j, 1) - rdata(chan, j - 1, 1) IF j > 0 THEN rdata(chan + 1, j, 3) = rdata(chan + 1, j, 1) - rdata(chan + 1, j - 1, 1) NEXT IF DEBUG THEN PRINT "INIT LOW REF = "; ref(chan, 1, 1); "INIT HIGH REF = "; ref(chan, 2, 1) PRINT "FINAL LOW REF = "; ref(chan, 1, 2); "FINAL HIGH REF = "; ref(chan, 2, 2) END IF '" *** START OF CALCULATIONS IF NOT RMX THEN traycal = 0 PRINT "IS THIS A TRAY CALIBRATION RUN (Y/N) >"; DO CALL GETNEWKEY(NEWKEYS) LOOP WHILE NEWKEYS = "" NEWKEYS = UCASES(NEWKEYS) IF (NEWKEYS = "Y") THEN traycal = -1 PRINT NEWKEYS END IF s IF RMX THEN PRINT " PRISM " + MACHINEIDS + " File-" + logfilenameS + " Channel "; channelnumber; " " + PUMPLISTS(PUMPNUMBER) + " Pump " + DATES ELSE PRINT " PRISM " + MACHINEIDS + " File-" + logfilenameS + " DATES END IF slopecal = slope(chan) PRINT PRINT "CUP " + chanaS; IF DEBUG THEN PRINT USING " A-CNTS DIFF VAR FROM MEAN VOLUME W/SLOPE =#####.# COUNTS/50 uL"; slopecal ELSE PRINT " Sub-A VOL" END IF FORj = 0 TO ENDCNT ISTEP 13 IF j > 0 T HEN rarrayϋ, 2) = rdata(chan, j, 3) ELSE rarray(j, 2) = 0 rarray(j, 1 ) = rdata(chan, j, 1) NEXT chan$ = chanaS GOSUB docalc PASSA = PASS IF traycal THEN GOSUB GETSLOPE slope(chan) = (slope(chan) / VAL(NEWS LOPES)) * vol '??? END IF PRINT slopecal = slope(chan + 1) PRINT "CUP " + chanbS; IF DEBUG THEN PRINT USING " B-CNTS DIFF VAR FROM MEAN VOLUME W/SLOPE =#####.# COUNTS/50 uL"; slopecal ELSE PRINT " Sub-B VOL" END IF FOR j = 0 TO ENDCNT IF j > 0 THEN rarrayG, 2) = rdata(chan + 1 , j, 3) ELSE rarrayG, 2) = 0 rarrayG. 1) = rdata(chan + 1 , j, 1) NEXT chan$ = chanbS GOSUB docalc PASSB = PASS IF NOT RMX THEN IF traycal THEN GOSUB GETSLOPE slope(chan + 1) = (slope(chan + 1) / VAL(NEWSLOPES)) * vol '??? GOSUB SAVESLOPES END IF END IF " end of system well-pair loop CLOSE #1 ' * R M X Paralle l * * * IFPASSAANDPASSBTHEN RESULT=1 IFNOTPASSAANDNOTPASSBTHENRESULT=0 IFPASSAANDNOTPASSBTHENRESULT=2 IFNOTPASSAANDPASSBTHENRESULT=3 IFRMXTHEN CALL sendrmx(RESULT) END IF ' R M X Paral le l LOCATE 24, 1 SYSTEM errorhandler: PRINT USING "ERROR ### - PROGRAM HALTED *** "; ERR STOP CALCULATE: mean = 0 meansq = 0 meannum = DISEND - DISSTART + 1 STEP 14 FOR i = (DISSTART) TO (DISEND) mean = mean + rarray(i, 2) meansq = meansq + rarray(i, 4) NEXT runmean = mean sumsq = runmean * runmean mean = mean / meannum stdev « SQR((meannum * meansq - sumsq) / (meannum * meannum)) FOR i = (DISSTART) TO (DISEND) rarray(i, 3) = -(mean - rarray(i, 2)) NEXT RETURN printit: STEP 15 FOR I - DISSTART TO DISEND IF DEBUG THEN PRINT USING " ###### #####.# #####.# ###.## uL"; rarray(i, 1 ); rarray(i, 2); rarray(i, 3); rarray(i, 2) * 50 / slopecal PRINT #2, USING "######.,#####.#,####.#,###.##, uL"; rarray(i, 1 ) ; rarray(i, 2); rarray(i, 3); rarray(i, 2) * 50 / slopecal ELSE PRINT USING " ###.## uL"; rarrayG, 2) * 50 / slopecal PRINT #2, USING "###.##,uL"; rarray(i, 2) * 50 / slopecal END IF NEXT ISTEP 16 'IF DEBUG THEN ' PRINT USING " Mean = ####.# counts ###.## uL PerCent CV =##.##%"; mean; mean * 50 / slopecal; (stdev / mean) * 100 PRINT USING " StDev = ###.## counts ###.## uL No. of Reads =## "; stdev; stdev * 50 / slopecal; meannum; PRINT #2, USING "Mean =,####.#,counts,###.##,uL,PerCent-CV=,##.##,%"; mean; mean * 50 / slopecal; (stdev / mean) * 100 PRINT #2, USING "StDev=,##.##,counts,###.##,uL,Number-Reads=,##"; stdev; stdev * 50 / slopecal; meannum; ELSE PRINT USING " Mean = ###.## uL PerCent CV =##.##%"; mean * 50 / slopecal; (stdev / mean) * 100 PRINT USING " StDev = ###.## uL No. of Reads =## "; stdev * 50 / slopecal; meannum; PRINT #2, USING "Mean =,###.##,uL,PerCent-CV= ,##.##,%"; mean * 50 / slopecal; (stdev / mean) * 100 PRINT #2, USING "StDev=,###.##,uL,Number-Reads=,##"; stdev * 50 / slopecal; meannum; END IF vol = mean * 50 / slopecal CV = (stdev / mean) * 100 PASS = 0 [STEP 17 IF NOT PUMPNUMBER = 9 THEN IF (vol >= 48) AND (vol <= 52) AND (CV <= 2) THEN PASS = -1 ' IF (vol >= 48.5) AND (vol <= 51.5) AND (CV <= 2) THEN PASS = -1 ' IF (vol >= 48!) AND (vol <= 52!) AND (CV <= 1.5) THEN PASS = -1 " IF (vol >= 47.5) AND (vol <= 48!) AND (CV <= (1 - (48 - vol) * 2)) THEN PASS = -1 ' IF (vol >= 52!) AND (vol <= 52.5) AND (CV <= (1 - (vol - 52!) * 2)) THEN PASS = -1 ELSE • """HERE FOR SAMPLE MANAGER IF (vol >= 47.5) AND (vol <= 52.5) THEN PASS = -1 ' IF (vol >= 45.5) AND (vol <= 54.5) AND (CV <= 9) THEN PASS = -1 "IF (vol >= 48!) AND (vol <= 52!) AND (CV <= 1.5) THEN PASS = -1 'IF (vol >= 47.5) AND (vol <= 48!) AND (CV <= (1 - (48 - vol) * 2)) THEN PASS = -1 'IF (vol >= 52!) AND (vol <= 52.5) AND (CV <= (1 - (vol - 52!) * 2)) THEN PASS = -1 END IF IF RMX THEN IF NOT PUMPNUMBER = 9 THEN IF PASS THEN PRINT " * PASS * ": PRINT #2, " PASS " END IF IF NOT PASS THEN PRINT " *** FAIL-"; : PRINT #2, " FAIL "; IF (vol < 48) THEN PRINT "VOL < 48 uL"; PRINT #2, " MEAN VOLUME < 48 uL " ' IF (vol < 47.5) THEN ' PRINT "VOL < 47.5 uL"; PRINT #2, " MEAN VOLUME < 47.5 uL " ELSE IF (vol > 52) THEN PRINT "VOL > 52 uL"; PRINT #2, " MEAN VOLUME > 52 uL " IF (vol > 52.5) THEN PRINT "VOL > 52.5 uL"; PRINT #2, " MEAN VOLUME > 52.5 uL " END IF IF CV > 2 THEN PRINT " CV > 2% " PRINT #2, " CV > 2% " ELSE PRINT " CV > 1.5%" PRINT #2, " CV > 1.5%" END IF END IF END IF ELSE '""" • "HERE FOR SAMPLE MANAGER IF PASS THEN PRINT " * PASS * ": PRINT #2, " PASS " END IF IF NOT PASS THEN PRINT " * "FAIL-"; : PRINT #2, " FAIL IF (vol < 47.5) THEN PRINT "VOL < 47.5 uL"; PRINT #2, " MEAN VOLUME < 47.5 uL " ' IF (vol < 45.5) THEN PRINT "VOL < 45.5 uL"; ' PRINT #2, " MEAN VOLUME < 45.5 uL ELSE IF (vol > 52.5) THEN PRINT "VOL > 52.5 uL"; PRINT #2, " MEAN VOLUME > 52.5 uL IF (vol > 54.5) THEN PRINT "VOL > 54.5 uL"; PRINT #2, " MEAN VOLUME > 54.5 uL END IF IF CV > 9 THEN PRINT " CV > 9% " PRINT #2, " CV > 9% ' ELSE PRINT " CV > 1.5%" PRINT #2, " CV > 1.5%" END IF END IF END IF END IF END IF PRINT " "; RETURN ErrorRecover: PRINT "ERROR # PRINT ERR STOP ' START OF CALCULATIONS docalc: SCOUNT = 0 skip = 0 OPEN logfilenameS FOR APPEND AS #2 PRINT #2, PRINT #2, " PRISM RF VOLUME VALIDATION " PRINT #2, "PRISM " + MACHINEIDS; PRINT #2, " " + DATES + " " + TIMES IF RMX THEN PRINT #2, " Channel "; channelnumber; " Pump " + PUMPLISTS(PUMPNUMBER) PRINT #2, " Cup number " + chan$; IF chanS = "1" OR chan$ = "3" OR chan$ = "5" THEN PRINT #2, " Sub-A" ELSE PRINT #2, " Sub-B" IF DEBUG THEN PRINT #2, "INIT LOW REF ,"; ref(chan, 1 , 1) PRINT #2, "INIT HIGH REF ,"; ref(chan, 2, 1) PRINT #2, "FINAL LOW REF,"; ref(chan, 1 , 2) PRINT #2, "FINAL HIGH REF,"; ref(chan, 2, 2) FORA = 0 TO ENDCNT PRINT #2, A, ; PRINT #2, USING " #####.#"; rarray(A, 1 ); PRINT #2, USING " #####.#"; rarray(A, 2) NEXT A END IF DISSTART = 1 DISEND = ENDCNT FOR i = DISSTART TO DISEND rarrayG, 4) = rarray(i, 2) * rarray(i, 2) NEXT GOSUB CALCULATE GOSUB printit CLOSE #2 RETURN DBLREAD: ' ***inner read loop VIEW PRINT 14 TO 23 IF DEBUG THEN LOCATE 23, 1 ELSE LOCATE (14 + j), 1 IF j > 0 THEN PRINT USING " ## "; j; END IF SELECT CASE chan CASE 1 : PRINT #1 , "M4" CASE 2: PRINT #1 , "M1" CASE 3: PRINT #1 , "M3" CASE 4: PRINT #1 , "M0" CASE 5: PRINT #1 , "M5" CASE 6: PRINT #1 , "M2" END SELECT CALL RCV CALL Delay(READDEL) 'delay for apres mux PRINT #1 , "R" CALL RCV S$ = MID$(sbuff$, 3, 10) + " " S = VAL(LEFT$(S$, 8)) / 32 oldchana = chana chana = VAL(LEFT$(S$, 7)) chnum = VAL(MID$(S$, 9, 1)) diffa = oldchana / 32 - S IF DEBUG THEN PRINT USING "####### # #####.## #####.##"; chana; chnum; S; diffa; IF j > 0 THEN PRINT USING "#####.## " ; (ABS((rdata(chan, j - 1 , 1 ) - chana) / 32)) * 50 * 32 / slope(chan); ELSE PRINT " "; ELSE IF j > 0 THEN PRINT USING " ###.## uL"; (ABS((rdata(chan, j - 1 , 1) - chana) / 32)) * 50 * 32 / slope(chan); END IF SELECT CASE chan + 1 CASE 1 : PRINT #1 "M4" CASE 2: PRINT #1 "M1 " CASE 3: PRINT #1 "M3" CASE 4: PRINT #1 "MO" CASE 5: PRINT #1 "M5" CASE 6: PRINT #1 "M2" END SELECT CALL RCV CALL Delay(READDEL) 'delay for apres mux PRINT #1 , "R" CALL RCV S$ = MID$(sbuff$, 3, 10) + " " S = VAL(LEFT$(S$, 8)) / 32 oldchanb = chanb chanb = VAL(LEFT$(S$, 7)) chnum = VAL(MID$(S$, 9, 1 )) diffb = oldchanb / 32 - S IF DEBUG THEN PRINT USING "####### # #####.## #####.##"; chanb; chnum; S; diffb; IF j > 0 THEN PRINT USING "#####.## "; (ABS((rdata(chan + 1 , j - 1 , 1) - chanb) / 32)) * 50 * 32 / slope(chan + 1 ); ELSE PRINT " "; PRINT ELSE IF j > 0 THEN PRINT USING " ###.## uL "; (ABS((rdata(chan + 1 , j - 1 , 1) - chanb) / 32)) * 50 * 32 / slope(chan + 1); PRINT END IF RETURN noslope: PRINT "ERROR-SLOPE.CAL NOT FOUND" PRINT "RUN RFCAL PRIOR TO OPERATION" SYSTEM '** ** • * * * * * * m ac hin e id code * NOMACHINEID: GOSUB GETMACHINEID GOTO continueinit newmachineid: GOSUB GETMACHINEID GOSUB SAVESLOPES: GOTO continueinit SAVESLOPES: PRINT #1 , ESCS; CALL RCV FOR i = 1 TO 6 PRINT #1 , "S" + LTRIM$(RTRIM$(STR$(i))) + LTRIM$(RTRIM$(STR$(slope(i)))) + CRS CALL RCV SLEEP (1) NEXT i RETURN GETMACHINEID: idcnt = 0 MACHINEIDS = "" VIEW PRINT 1 TO 2 LOCATE 2, 1 PRINT SPACE$(79); LOCATE 2, 1 PRINT "Enter PRISM ID NUMBER (001 - 999) > "; DO DO CALL GETNEWKEY(NEWKEYS) LOOP WHILE NEWKEYS = "" IF NEWKEYS = CR$ THEN IF idcnt = 0 THEN GOTO GETMACHINEID IF idcnt = 1 THEN MACHINEIDS = "00" + MACHINEIDS IF idcnt = 2 THEN MACHINEIDS = "0" + MACHINEIDS 44 idcnt = 4 EXIT DO END IF IF NEWKEYS = BSS THEN IF idcnt > 0 THEN idcnt = idcnt - 1 LOCATE CSRLIN, (POS(O) - 1) PRINT " "; LOCATE CSRLIN, (POS(O) - 1) MACHINEIDS = LEFT$(MACHINEID$, (LEN(MACHINEIDS) - 1)) END IF ELSE IF idcnt = 3 THEN idcnt = idcnt - 1 LOCATE CSRLIN, (POS(O) - 1) MACHINEIDS = LEFT$(MACHINEID$, (LEN(MACHINEIDS) - 1)) END IF MACHINEIDS = MACHINEIDS + NEWKEYS idcnt = idcnt + 1 PRINT NEWKEYS; END IF LOOP WHILE idcnt < 5 RETURN 'GETMACHINEID: GETSLOPE: NEWSLOPES = "" idcnt = 0 PRINT PRINT "ENTER CORRECT VALUE FOR THIS WELL IN uL (xx.xx) > "; DO DO CALL GETNEWKEY(NEWKEYS) LOOP WHILE NEWKEYS = "" IF NEWKEYS = CR$ THEN IF idcnt < 2 THEN GOTO GETSLOPE idcnt = 5 EXIT DO END IF IF NEWKEYS = BS$ THEN IF idcnt > 0 THEN idcnt = idcnt - 1 LOCATE CSRLIN, (POS(O) - 1) PRINT " "; LOCATE CSRLIN, (POS(O) - 1) NEWSLOPES = LEFT$(NEWSLOPE$, (LEN(NEWSLOPES) - 1)) END IF ELSE IF idcnt = 5 THEN idcnt = idcnt - 1 LOCATE CSRLIN, (POS(0) - 1) NEWSLOPES = LEFT$(NEWSLOPE$, (LEN(NEWSLOPES) - 1)) END IF NEWSLOPES = NEWSLOPES + NEWKEYS idcnt = idcnt + 1 PRINT NEWKEYS; END IF LOOP WHILE idcnt < 6 SLOPEVAL = VAL(NEWSLOPES) LOCATE CSRLIN, 1 PRINT SPACE$(79); LOCATE CSRLIN, 1 RETURN SUB BENCHDISP REM Start Pump by writing 1H to Parallel Port OUT PPORTOUT%, &H1 WAIT PPORTIN%, &H20, &H20 WAIT PPORTIN%, &H20 REM Wait for 300ms CALL Delay(3300) OUT PPORTOUT%, &H0 REM Stop Pump by writing OH to Parallel Port OUT PPORTOUT%, &H0 END SUB SUB Delay (counts) • x = 0 "WHILE x < counts 'x = x + 1 ■ WEND DIM INARY%(7), OUTARY%(7) 'Define input and output 'arrays for INT86. ' Define register-array indices to ' make program easier to understand. CONST ax = 0, bx = 1 , ex = 2, dx = 3, bp = 4, si = 5, di = 6, FL = 7 INARY%(ax) = &H8600 'DOS function to WAIT SERVICE INARY%(cx) = counts / 800 "DOS HIGH ORDER WAIT INARY%(dx) = &H61A8 "DOS LOW ORDER WAIT x = INP(&H61) CALL INT860LD(&H15, INARY%(), OUTARY%()) 'Perform the delay END SUB SUB DISPTRAY (chan) VIEW PRINT 5 TO 14 CLS (2) PRINT PRINT " SELECT CASE chan CASEO PRINT " I 4 PRINT " B | 2 6 PRINT " I 3 PRINT " A | 1 5 CASE 1 PRINT " I PRINT " B | 2 X PRINT " I x PRINT " A I 1 X CASE 2 PRINT " I X PRINT " | X X PRINT " I x PRINT " | 1 X CASE 3 PRINT " B | 4 PRINT " | X X PRINT " A | 3 PRINT " I X X CASE 4 PRINT" I X I" PRINT" |X X I" PRINT" I 3 I" PRINT" |X X I" CASE 5 PRINT" I X I" PRINT" B |X 6 |" PRINT" I X |" PRINT" A |X 5 I" CASE 6 PRINT" I X I" PRINT" |X X I" PRINT" I X I" PRINT" I X 5 I" END SELECT PRINT " " PRINT IF DEBUG THEN PRINT " RAW-A MX ADJ-A LAST RD VOLUME RAW-B MX ADJ-B LAST RD VOLUME"; ELSE PRINT " Dispense No. Sub-A Sub-B" END IF END SUB SUB GETNEWKEY (NEWKEYS) NEWKEYS = UCASES(INKEYS) IF NEWKEYS = ESCS THEN CLS PRINT PRINT "RUN ABORTED BY USER" ' RMX Parallel * IF RMX THEN CALLsendrmx(14) "ESCAPE (HEX "E") END IF ' * RMX Parallel *** ** SYSTEM END IF END SUB SUB GETREFS (LOWREFS, HIGHREFS) " * GET LOW REFERENCE * VIEW PRINT 3 TO 4 CLS (2) PRINT PRINT " WAIT WHILE LOW REFERENCE READS ARE OBTAINED"; PRINT #1, ESCS; CALL RCV PRINT #1, "M6" CALL RCV VIEW PRINT 14 TO 23 LOCATE 23, 1 PRINT #1, "C" LFFLAG = 1 CALL RCV FOR i = 1 TO 5 CALL RCV IF (i > 1) AND DEBUG THEN PRINT sbuff$; NEXT LFFLAG = 0 LOWREFS = LEFT$(sbuff$, 7) ' * GET HIGH REFERENCE * ** VIEW PRINT 3 TO 4 CLS (2) PRINT PRINT " WAIT WHILE HIGH REFERENCE READS ARE OBTAINED"; PRINT #1, ESCS; CALL RCV PRINT #1, "M7" CALL RCV VIEW PRINT 14 TO 23 LOCATE 23, 1 PRINT #1, "C" LFFLAG = 1 CALL RCV FOR i = 1 TO 5 CALL RCV IF (i > 1) AND DEBUG THEN PRINT sbuff$; NEXT HIGHREFS = LEFT$(sbuff$, 7) LFFLAG = 0 END SUB SUB getrmx rmxdatardy = 0 rmxrcv = 0 'clear last char S = INP(PPORTIN%) 'look for READY from remote IF (S AND &H80) > 0 THEN 'high here -low at remote cchar = ((S AND &H78) / 8) ' mask strobe and shift right 3x IF DEBUG THEN PRINT "RCVD FROM RMX - "; cchar x = cchar GOSUB ackch rmxdatardy = -1 END IF rmxrcv = cchar EXIT SUB ackch: OUT PPORTOUT%, (x OR &H10) OUT PPORTOUT%, x DO GETNEWKEY (NEWKEYS) S = INP(PPORTIN%) LOOP WHILE (S AND &H80) > 0 OUT PPORTOUT%, &H10 RETURN END SUB SUB RCV * ** * **** RECEIVE DATA FROM METER' SCOUNT = (VAL(RIGHT$(TIME$, 2))) + 3 IF SCOUNT > 59 THEN SCOUNT = SCOUNT - 60 AS = "" sbuffS = DO IF LOC(1) > 0 THEN ALASTS = AS A$ = INPUT$(1 , #1) ' PRINT a$; ' PRINT VAL(A$); ' IF ((ECHOS = (CR$)) AND A$ = CHR$(6)) THEN SBUFFS = SBUFFS + CR$: EXIT DO IF NOT (A$ = CRS) THEN sbuffS = sbuffS + A$ ' scount = 0 ' ELSE ' scount = scount + 1 END IF SCOUNT2 = VAL(RIGHT$(TIME$, 2)) IF SCOUNT = SCOUNT2 THEN PRINT PRINT ""ERROR *** METER NOT RESPONDING - Check cables and power" PRINT BEEP IF RMX THEN CALL sendrmx(14) 'ESCAPE (HEX Ε") SYSTEM END IF 'IF scount > 100 THEN EXIT DO IF LFFLAG > 0 AND A$ = LF$ THEN A$ = ">" LOOP WHILE NOT (A$ = ">") x = LOC(1 ) IF x > 256 THEN PRINT "X>256"; x END SUB SUB sendrmx (rmxsnd) x = rmxsnd OUT PPORTOUT%, (x OR &H10) 'set data OUT PPORTOUT%, x 'set READY ( low here - high at remote) IF x = 14 THEN EXIT SUB DO S = INP(PPORTIN%) LOOP WHILE (S AND &H80) = 0 'wait for ACK & echo (hi here - lo at remote) OUT PPORTOUT%, &H10 'reset ready - hi here - lo at remote cchar = ((S AND &H78) / 8) IF DEBUG THEN PRINT "SENT TO RMX - "; cchar ' print echo'ed char DO S = INP(PPORTIN%) ' wait for ack to reset LOOP WHILE (S AND &H80) > 0 'lo here - hi at remote END SUB SUB TESTREF '*G ET LOW R EFERENC E * * * * VIEW PRINT 4 TO 5 CLS (2) PRINT " WAIT FOR TRAY STABILITY TEST ..."; PRINT #1 , ESCS; CALL RCV PRINT #1 , "M6" CALL RCV CALL Delay(READDEL) NUMTRIES = 200 FOR Z = 1 TO NUMTRIES SCOUNT = (VAL(RIGHT$(TIME$, 2))) + 1 IF SCOUNT > 59 THEN SCOUNT = SCOUNT - 60 SCOUNTEND = SCOUNT + 6 IF SCOUNTEND > 59 THEN SCOUNTEND = SCOUNTEND - 60 'SYNC TO NEXT SECOND DO SCOUNT2 = VAL(RIGHT$(TIME$, 2)) LOOP WHILE SCOUNT2 = SCOUNT VIEW PRINT 14 TO 23 LOCATE 23, 1 PRINT #1 , "C" LFFLAG = 1 DO CALL RCV CALL GETNEWKEY(NEWKEYS) STARTREF = VAL((LEFT$(sbuff$, 7))) LOOP WHILE STARTREF = 0 DO CALL RCV CALL GETNEWKEY(NEWKEYS) IF DEBUG THEN PRINT sbuffS; SC0UNT2 = VAL(RIGHT$(TIME$, 2)) LOOP WHILE SCOUNT2 < SCOUNTEND LFFLAG = 0 ENDREF = VAL((LEFT$(sbuff$, 7))) DIFFREF = ABS((ENDREF - STARTREF)) IF DIFFREF < 15 THEN '15 FOR 5 SEC = 180 CNTS/MIN MAX DRIFT PRINT #1 , ESCS; CALL RCV CLS (2) EXIT SUB END IF PRINT #1 , ESCS; CALL RCV PRINT PRINT "RETRY #"; Z; " OF "; NUMTRIES; " START CNT -"; STARTREF; " END CNT -"; ENDREF NEXTZ 'FAILURE TO STABILIZE PRINT PRINT "'"ERROR" * METER NOT STABILIZING WITHIN 1 MINUTE " PRINT " Allow 10 minutes for tray warmup and check tray and cups." PRINT BEEP IF RMX THEN CALL sendrmx(14) 'ESCAPE (HEX Ε") SYSTEM END SUB

Claims: WHAT IS CLAIMED IS: 1. An apparatus for verifying a volume of fluid comprising: (a) a receptacle for containing fluid; (b) a first conductor operatively associated with the receptacle; (c) a second conductor operatively associated with the receptacle offset from the first conductor; (d) a source of a first electrical signal electrically connected with the first conductor; and (e) a monitor electrically connected with the second conductor for detecting a second electrical signal created in the second conductor. 2. An apparatus as defined in claim 1 further comprising: (f) a feedback mechanism operatively connected with the monitor such that the feedback mechanism provides feedback indicative of the second electrical signal. 3. An apparatus as defined in claim 1 further comprising: (f) a third conductor electrically connected with at least one of the first conductor and the second conductor to electromagnetically shield the at least one of the first conductor and the second conductor. 4. An apparatus as defined in claim 3 further comprising: (g) an electrical insulator electrically disposed between the third conductor and the at least one of the first conductor and the second conductor. 5. An apparatus as defined in claim 1 further comprising: (f) a liner connectable with the receptacle. 6. An apparatus as defined in claim 1 further comprising: (f) a liner removably connectable with the receptacle. 7. An apparatus as defined in claim 1 further comprising: (f) a computer electrically connected with at least one of the first conductor and the second conductor. 8. A method for verifying a volume of fluid dispensed from a nozzle, the method comprising the steps of: (a) positioning a receptacle adjacent the nozzle such that fluid dispensed from the nozzle enters the receptacle; (b) applying a first electrical signal to a first conductor operatively connected with the receptacle; and (c) monitoring a second electrical signal created in a second conductor operatively connected with the receptacle responsive to the first electrical signal. 9. A method as defined in claim 8 further comprising the steps of: (d) predetermining a condition indicative of a desired volume of fluid; and (e) comparing the second electrical signal with the condition to determine if the desired volume of fluid were in the receptacle. 10. A method as defined in claim 8 wherein the monitoring step (c) comprises i. monitoring at least one of an amplitude of and a voltage associated with the second electrical signal. 11. A method for verifying a volume of a fluid, the method comprising the steps of: (a) placing a volume of fluid within a receptacle; (b) positioning a first conductor adjacent the receptacle such that the first conductor does not contact the volume of fluid; (c) positioning a second conductor adjacent the receptacle such that the second conductor does not contact the volume of fluid or the first conductor; (d) applying a first electrical signal to the first conductor; and (e) monitoring a second electrical signal generated in the second conductor responsive to the first electrical signal to verify the volume of the fluid in the receptacle. 12. An apparatus for verifying a volume of fluid comprising: (a) a receptacle for containing fluid; (b) a first conductor operatively associated with the receptacle such that the first conductor does not contact the volume of the fluid; (c) a second conductor operatively associated with the receptacle offset from the first conductor such that the first conductor does not contact the volume of the fluid; (d) a source of a first electrical signal electrically connected with the first conductor; and (e) a monitor electrically connected with the second conductor for detecting a second electrical signal created in the second conductor.

Inventors: FOWLER JOHN PAUL, KOTLARIK JOHN, SCHAPIRA THOMAS GERARD, SLESZYNSKI NEAL T, SMITH KENNETH CHARLES, VIEGUT TODD E, WROBLEWSKI MIECZYSLAW, FOWLER, JOHN, PAUL, KOTLARIK, JOHN, SCHAPIRA, THOMAS, GERARD, SLESZYNSKI, NEAL, T., SMITH, KENNETH, CHARLES, VIEGUT, TODD, E., WROBLEWSKI, MIECZYSLAW
Applicants: ABBOTT LAB, ABBOTT LABORATORIES
Application year: 1996
Main classification: G01F23
IPC codes: G01F17, G01F22, G01F23, G01N35