CH-9101 Phone Fax E-Mail Internet Herisau/Switzerland +41 71 353 85 85 +41 71 353 89 01 info@metrohm.ch www.metrohm.ch Dosing Interface USB Toolbox Version 1.0 Reference manual 8.104.0003 06.
Table of content Table of content 1 Overview ................................................................1 1.1 1.2 1.3 Distributed files ..............................................................................................1 The 846 Dosing Interface...............................................................................2 1.2.1 System connections .................................................................................2 1.2.2 Connectors of the 846 Dosing Interface ..............
1.1 Distributed files 1 Overview The Liquid Handling library for Metrohm 846 Dosing Interface provides a Dynamic Link Library (DLL) for the software development for the Microsoft Windows® 2000 and XP operating systems. Based on the Metrohm Universal Serial Bus driver (metr_770.dll) the Liquid Handling Library offers all functions necessary for free programming of liquid handling processes with the versatile Dosino drives.
1.2 The 846 Dosing Interface 1.2 The 846 Dosing Interface The 846 Dosing Interface is part of the Metrohm Titrando system as a system component and control instrument. The instruments are controlled via USB 1.1 connections. The four MSB connectors (MSB=Metrohm Serial Bus) of the 846 Dosing Interface enable the operation of Metrohm Dosinos (models 700 and 800) which allow complex liquid handling processes. One or more 846 Dosing Interfaces can be controlled at the same time.
1.2 The 846 Dosing Interface 1.2.2 Connectors of the 846 Dosing Interface 3 2 MSB3 MSB4 MSB1 MSB2 1 USB1 USB2 6 Controller 100 - 240 V f 50-60 Hz P 45 W 5 Fig. 2: Rear view of the 846 Dosing Interface 1 USB connections USB 1 and USB 2 USB ports (type A) for connection of peripheral devices or further Dosing Interfaces. 4 Controller connection Connection for PC or further Dosing interfaces. Use 6.2151.000 controller cable. 2 MSB connections MSB 1 to MSB 4 Connection for dosing drives.
1.2 The 846 Dosing Interface 1.2.4 Dosino Connection MSB Dosing Interface Fig. 4: Connecting a Dosino drive 700/800 Dosino drives are connected at the MSB connecters 1 to 4. A Dosino drive can be recognized and integrated in a system by use of the Init846() function. The MSB(…) connector specifies the Dosino number.
1.3 Metrohm 700/800 Dosinos and Dosing Units 1.3 Metrohm 700/800 Dosinos and Dosing Units The Metrohm 800 Dosino is a versatile dosing drive which can be used with various Metrohm dosing or titrating instruments (e.g. 808 or 809 Titrando). The 800 Dosino and its associated 807 Dosing unit are suitable for use as a buret, not just for simple dosing tasks and titrations, etc. but also for complex automation and liquid handling applications, such as sample transfer or pipetting.
1.3 Metrohm 700/800 Dosinos and Dosing Units 1.3.1 Dosing/Filling the dosing cylinder When the liquid is ejected push rod 9 of the 800 Dosino pushes dosing piston 12 in the cylinder downward. The liquid in cylinder 13 is forced through the valve disk in cylinder base 14 into one of the four openings in distributor disk 15, depending on the valve disk position. In distributor 17 the liquid is transferred to a dosing port 16. 9 12 13 14 15 When the valve disk has been switched (see below), i.e.
1.3 Metrohm 700/800 Dosinos and Dosing Units 1.3.2 Switching the valve disk The dosing unit has four ports. Two of them are on the outer housing and two on the bottom of the dosing unit. Depending on the position of black valve disk 18 a connection between cylinder 13 and the opening of white distributor disk 15 assigned to the port is made.
1.3 Metrohm 700/800 Dosinos and Dosing Units 1.3.4 Standard occupancy of the Dosino ports: Port 1 Dosing outlet; M6 threaded connection on the left-hand side of the housing. The liquid is ejected through a dosing tip or a titration tip. Port 2 Filling inlet; M6 threaded connection on the base of the dosing unit. The liquid is aspirated from a storage container. 8 Port 3 Not assigned; M6 threaded connection on the right-hand side of the housing.
2.1 Constants 2 DLL Reference This Reference applies to the interfaces of the programming languages C++, Delphi and Visual Basic. For descriptions of the Java interface, see 3.1.1 2.1 Constants 2.1.1 Return states enum eReturnstate { RET_STAT_OK RET_STAT_nvNumber RET_STAT_noDosino RET_STAT_commError RET_STAT_argError RET_STAT_nvAction }; = = = = = = 0, 1, 2, 3, 4, 5 These are the return values of the Dosino functions, except Init846().
2.1 Constants Status messages of a Dosino which are returned by the Status() function.
2.1 Constants 2.1.4 Valve disk enum eCockMove { CK_MV_Asc CK_MV_Desc CK_MV_Auto CK_MV_NotOver }; =0, =1, =2, =3 Turning mode of a Dosing Unit's valve disk. Port 1 to 4 of a Dosing Unit can be accessed in different orders. Asc Desc Auto NotOver Ascending order (Port 1 Æ 4) Descending order (Port 4 Æ 1) automatic mode, shortest path protected mode, a specified port will not be crossed desc. Dosing Interface USB Toolbox, DLL Reference asc.
2.2 Functions 2.2 Functions 2.2.1 Init846 bool Init846() Initializes all the connected Metrohm 846 Dosing Interfaces found in the USB chain. All Dosino drives are recognized and the Dosing Units are reset. Running processes are stopped. This function returns true if everything is initialized correctly. Input parameters none Output parameters bool 2.2.2 GetProgramVersion GetProgramVersion(long IfNo, char* ProgramVersion, long ProgVerBufSize) Reads the program version of the Dosing Interface firmware.
2.2 Functions 2.2.4 Status Status(long IfNo, long MsbNo, eDosinoState &DosinoState) Reads the current status of a Dosino drive. Input parameters IfNo MsbNo long long Dosing Interface [1… ] Dosino at MSB[1…4] Output parameters eReturnstate DosinoState eDosinoState return value status of the Dosino drive 2.2.5 GetCylVolume GetCylVolume(long IfNo, long MsbNo, long &Volume) Returns the cylinder volume of the Dosing Unit. This function can be used for the detection of a mounted Dosing Unit.
2.2 Functions 2.2.7 ZeroAdjust ZeroAdjust(long IfNo, long MsbNo, float RevRate) Runs the piston of the Dosino to zero position and initializes the drive. Input parameters IfNo MsbNo RevRate long long float Dosing Interface [1… ] Dosino at MSB[1…4] Filling speed of piston [0.01...166mL/min] Output parameters return value eReturnstate 2.2.8 Adjust Adjust(long IfNo, long MsbNo, eDirection Direction) Eliminate slack of piston coupling.
2.2 Functions 2.2.10 DU_ToEnd DU_ToEnd(long IfNo, long MsbNo, float FwdRate) Move piston to the mechanical end position. This function can be used to remove any air bubbles in the cylinder. Input parameters IfNo MsbNo FwdRate long long float Dosing Interface [1… ] Dosino at MSB[1…4] Dosing rate [0.01…166 mL/min] Output parameters return value eReturnstate 2.2.
2.2 Functions Output parameters return value eReturnstate 2.2.13 DU_Exchange DU_Exchange(long IfNo, long MsbNo, long Port, float RevRate) Prepares the Dosing Unit for exchange. The cylinder is filled from the specified port and after that the valve disk is turned to port 2. This action can be hold and continued, but not be stopped. Input parameters IfNo MsbNo Port RevRate long long long float Dosing Interface [1… ] Dosino at MSB[1…4] Dosino port to fill from [1…4] Filling rate [0.
2.2 Functions 2.2.16 DosContinue DosContinue(long IfNo, long MsbNo) Continue a halted Dosino action. Input parameters IfNo MsbNo long long Dosing Interface [1… ] Dosino at MSB[1…4] Output parameters return value eReturnstate 2.2.17 DU_Prep DU_Prep(long IfNo, long MsbNo, long InPort, float InVolume, float InRate, long OutPort, float OutVolume, float OutRate, long SpecPort, float SpecVolume, float SpecRate) Prepares a Dosing Unit for further use.
2.2 Functions InRate OutPort OutVolume OutRate SpecPort Specvolume SpecRate float long float float long float float Filling rate [0.01…166 mL/min] Output port 1 [1…4] Dosing volume 1 [0…20000 µL] Dosing rate 1 [0.01…166 mL/min] Output Port 2 [1…4] Dosing volume 2 [0…20000 µL] Dosing rate 2 [0.01…166 mL/min] Output parameters return value eReturnstate 2.2.
2.3 Error Messages 2.3 Error Messages Error messages are presented in an array (Error number0…9), in which error number 0 is always the most recent one. If more errors occur in a process, more error entries are made. New errors always overwrite older ones, beginning with index 0.
3.1 Programming interface definitions 3 Annex 3.1 Programming interface definitions 3.1.1 Java interface class /* * Copyright(c) 2004 Metrohm AG * * $Archive: /tools/846_usb_dll/src/java_wrapper_846/src/metr/DosIntFace846.java $ * $Date: 13.06.05 9:16 $ * $Author: Km $ * $Revision: 5 $ */ package metr; /** * * @author Michael Keller * @version 1.2.5.0, 09/06/05 */ /** * DosIntFace846 class which contains all static methods to communicate with 846 Dosing Interfaces.
3.1 Programming interface definitions * * @param ifNo Dosing Interface [1... ?] * @param msbNo Dosino at MSB [1... 4] * @return Volume 0; 2; 5; 10; 20; 50 mL, Cylinder volume = 0 means: no Dosing Unit mounted! * @throws DosIntFace846Exception */ public static final int getCylVolume(int ifNo, int msbNo) throws DosIntFace846Exception{ dosinoVolume = 0; int nReturnstate = DosIntFace846.
3.1 Programming interface definitions * Move the piston to an absolute position. The full stroke of the piston is subdivided in 10000 positions. * * @param ifNo Dosing Interface [1... ?] * @param msbNo Dosino at MSB [1... 4] * @param position absolut Position [0...10000] * @param rate Dosing rate [0.01... 166 mL/min] * @throws DosIntFace846Exception */ public static final void goPos(int ifNo, int msbNo, int position, float rate) throws DosIntFace846Exception{ int nReturnstate = DosIntFace846.
3.1 Programming interface definitions throw new DosIntFace846Exception(DosIntFace846Exception.getErrorString(nReturnstate), nReturnstate); } /** * Prepares the Dosing Unit for exchange. The cylinder is filled from the specified port and then the valve disk is * turned to port 2. * This action can be held and continued, but not stopped. * * @param ifNo Dosing Interface [1... ?] * @param msbNo Dosino at MSB [1... 4] * @param port Fill port [1..4] * @param revRate Filling rate [0.01...
3.1 Programming interface definitions public static final void dosStop(int ifNo, int msbNo) throws DosIntFace846Exception{ int nReturnstate = DosIntFace846.callStop(ifNo, msbNo); if (nReturnstate != 0) throw new DosIntFace846Exception(DosIntFace846Exception.getErrorString(nReturnstate), nReturnstate); } /** * Holds the current Dosino action. The held action can be continued or finally stopped. * * @param ifNo Dosing Interface [1... ?] * @param msbNo Dosino at MSB [1...
3.1 Programming interface definitions * @param inPort Filling port [1... 4] * @param inVolume Fill tube volume [0... 20000 mm^3] * @param inRate Filling rate [0.01... 166 mL/min] * @param outPort Output port 1 [1... 4] * @param outVolume Dosing tube volume on Output port 1 [0... 20000 mm^3] * @param outRate Dosing rate on Output port 1 [0.01... 166 mL/min] * @param specPort Output port 2 [1... 4] * @param specVolume Dosing tube volume on Output port 2 [0...
3.1 Programming interface definitions */ public static final int getInterfaceId(int ifNo) throws DosIntFace846Exception{ interfaceId = 0; int nReturnstate = DosIntFace846.callInterfaceId(ifNo); if (nReturnstate == 0) return interfaceId; else throw new DosIntFace846Exception(DosIntFace846Exception.getErrorString(nReturnstate), nReturnstate); } /** * Get the program version of the 846 Dosing Interface * * @param ifNo Dosing Interface [1...
3.
3.1 Programming interface definitions 3.1.2 Java interface exception class /* * Copyright(c) 2005 Metrohm AG * created date: 09.06.2005 * $Archive: /tools/846_usb_dll/src/java_wrapper_846/src/metr/DosIntFace846Exception.jav a $ * $Date: 9.06.05 15:46 $ * $Author: Km $ * $Revision: 2 $ */ package metr; /** * * @author Michael Keller * @version 1.2.5.
3.1 Programming interface definitions 3.1.3 C++ interface definition header file /******************************************************************************* Metrohm AG Switzerland. All rights reserved. $Header: /Tools/846_USB_DLL/src/846_Dosing_Interface/846DosingInterfaceDefinition.h 27.05.05 16:39 Km $ 7 ------------------------------------------------------------------------------$Log: /Tools/846_USB_DLL/src/846_Dosing_Interface/846DosingInterfaceDefinition.h $ * * 7 27.05.05 16:39 Km * * 6 27.
3.
3.1 Programming interface definitions }; CK_MV_Desc = 1, // Automatic mode, shortest path CK_MV_Auto = 2, // Protected mode, cock will not move over specified port CK_MV_NotOver = 3 #ifdef __cplusplus // C-Declarations for C++ extern "C" { #endif // Initializes all Metrohm 846 Dosing Interfaces found in the USB chain. // All Dosino drives are recognized and the Dosing Units are reset. // Running processes are stopped.
3.1 Programming interface definitions // long MsbNo Dosino at MSB [1... 4] // eDirection Direction Direction of the desired // piston movement. // return eReturnstate DllDirection eReturnstate __stdcall Adjust(long IfNo, long MsbNo, eDirection Direction); // Move the piston to an absolute position. The full stroke of the piston is // subdivided in 10000 positions. // // parameter long IfNo Dosing Interface [1... ?] // long MsbNo Dosino at MSB [1... 4] // long Position Absolute piston position // [0...
3.1 Programming interface definitions // float RevRate Filling rate // [0.01... 166 mL/min] // return eReturnstate DllDirection eReturnstate __stdcall DU_Fill(long IfNo, long MsbNo, long Port, float RevRate); // Prepares the Dosing Unit for exchange. The cylinder is filled from the // specified port and then the valve disk is turned to port 2. // This action can be held and continued, but not stopped. // // parameter long IfNo Dosing Interface [1... ?] // long MsbNo Dosino at MSB [1...
3.1 Programming interface definitions // [0... 20000 mm^3] // float InRate Filling rate // [0.01... 166 mL/min] // long OutPort Output port 1 [1... 4] // float OutVolume Dosing tube volume on Output // port 1 [0... 20000 mm^3] // float OutRate Dosing rate on Output port 1 // [0.01... 166 mL/min] // long SpecPort Output port 2 [1... 4] // float SpecVolume Dosing tube volume on Output // port 2 [0... 20000 mm^3] // float SpecRate Dosing rate on Output port 1 // [0.01...
3.1 Programming interface definitions // long ErrorBufSize Number of characters of // ErrorCode including a // terminating null character // (at least 14) // return eReturnstate DllDirection eReturnstate __stdcall GetInterfaceError(long IfNo, long MsbNo, long ErrorNumber, char* ErrorCode, long ErrorBufSize); // Reads the stop condition of a Dosino action. // // parameter long IfNo Dosing Interface [1... ?] // long MsbNo Dosino at MSB [1...
3.1 Programming interface definitions 3.1.4 Delphi Interface (*****************************************************************************) (* *) (* Metrohm AG Switzerland. All rights reserved. *) (* *) (*---------------------------------------------------------------------------*) (* *) (* 1 30.05.05 14:28 rw *) (* *) (*****************************************************************************) UNIT DosIntFace846; {$MINENUMSIZE 4 } INTERFACE CONST dllName = '846_Dosing_Interface.
3.
3.1 Programming interface definitions (* (* (* (* (* (* (* (* (* (* (* (* Turns the valve disk to the selected port. The turning direction is chosen according to "Move". If "Move" is set to CK_MV_NotOver, the Port specified in "NotOver" will not be crossed. Otherwise this parameter is ignored. *) *) *) *) *) parameter LONG IfNo Dosing Interface [1... ?] *) LONG MsbNo Dosino at MSB [1... 4] *) LONG Port Target Dosino port [1...
3.1 Programming interface definitions STDCALL; EXTERNAL dllName; (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* (* Dose a specified volume via the actual port. Dosing rate, filling rate, filling port and piston direction can be chosen. With reverse piston direction it is possible to aspirate a desired volume. In this case the filling port is used as outlet port. The dosing can be hold, continued and stopped. *) *) *) *) *) *) parameter LONG IfNo Dosing Interface [1... ?] *) LONG MsbNo Dosino at MSB [1...
3.1 Programming interface definitions (* Stops the current Dosino action. (* (* parameter LONG IfNo Dosing Interface [1... ?] (* LONG MsbNo Dosino at MSB [1... 4] (* return eReturnstate FUNCTION DosStop(IfNo,MsbNo : LONG) : eReturnState; STDCALL; EXTERNAL dllName; *) *) *) *) *) (* (* (* (* (* (* *) *) *) *) *) *) Holds the current Dosino action. The held action can be continued or finally stopped. parameter LONG IfNo Dosing Interface [1... ?] LONG MsbNo Dosino at MSB [1...
3.1 Programming interface definitions (* [0... 20000 mm^3] (* FLOAT InRate Filling rate (* [0.01... 166 mL/min] (* LONG OutPort Output port 1 [1... 4] (* FLOAT OutVolume Dosing tube volume on Output (* port 1 [0... 20000 mm^3] (* FLOAT OutRate Dosing rate on Output port 1 (* [0.01... 166 mL/min] (* LONG SpecPort Output port 2 [1... 4] (* FLOAT SpecVolume Dosing tube volume on Output (* port 2 [0... 20000 mm^3] (* FLOAT SpecRate Dosing rate on Output port 1 (* [0.01...
3.1 Programming interface definitions IMPLEMENTATION FUNCTION GetErr(IfNo,MsbNo,Number : LONG; VAR Buf; BufCapacity : LONG) : eReturnState; STDCALL; EXTERNAL dllName NAME 'GetError'; FUNCTION GetInterfaceError(IfNo,MsbNo,ErrorNumber : LONG; VAR ErrorCode : AnsiString) : eReturnState; CONST maxErrCodeLen = 14; VAR eCodeArr : ARRAY[0..
3.1 Programming interface definitions 3.1.5 Visual Basic Interface Attribute VB_Name = "Module1" '***************************************************************************** '* * '* Metrohm AG Switzerland. All rights reserved. * '* * '*---------------------------------------------------------------------------* '* * '* 1 31.05.
3.
3.1 Programming interface definitions ' ' parameter Long IfNo Dosing Interface [1... ?] ' Long MsbNo Dosino at MSB [1... 4] ' Long Port Target Dosino port [1... 4] ' eCockMove Move Turning direction of the ' valve disk ' Long NotOver protected Dosino port [1... 4] ' return eReturnstate Declare Function DU_Cock Lib "846_Dosing_Interface.
3.1 Programming interface definitions As eReturnState ' Dose a specified volume via the actual port. Dosing rate, filling rate, ' filling port and piston direction can be chosen. ' With reverse piston direction it is possible to aspirate a desired volume. ' In this case the filling port is used as outlet port. ' The dosing can be hold, continued and stopped. ' ' parameter Long IfNo Dosing Interface [1... ?] ' Long MsbNo Dosino at MSB [1... 4] ' Long FillPort Filling port ' Single Volume Dosing volume ' [0..
3.1 Programming interface definitions (ByVal IfNo As Long, ByVal MsbNo As Long, _ ByRef DosinoState As eDosinoState) As eReturnState ' Stops the current Dosino action. ' ' parameter Long IfNo Dosing Interface [1... ?] ' Long MsbNo Dosino at MSB [1... 4] ' return eReturnstate Declare Function DosStop Lib "846_Dosing_Interface.dll" _ (ByVal IfNo As Long, ByVal MsbNo As Long) As eReturnState ' Holds the current Dosino action. The held action can be continued or ' finally stopped.
3.1 Programming interface definitions ' Empties the Buret Unit. Dosing cylinder and tubings are emptied in one ' automated process. ' ' parameter Long IfNo Dosing Interface [1... ?] ' Long MsbNo Dosino at MSB [1... 4] ' Long InPort Filling port [1... 4] ' Single InVolume Fill tube volume ' [0... 20000 mm^3] ' Single InRate Filling rate ' [0.01... 166 mL/min] ' Long OutPort Output port 1 [1... 4] ' Single OutVolume Dosing tube volume on Output ' port 1 [0...
3.1 Programming interface definitions Private Function TruncString(ByVal s As String) As String Dim l As Long l = InStr(s, Chr(0)) If (l > 0) Then TruncString = Left(s, l - 1) Else TruncString = s End If End Function ' Reads casual error messages which occur during Dosino actions. ' ' parameter Long IfNo Dosing Interface [1... ?] ' Long MsbNo Dosino at MSB [1... 4] ' Long ErrorNumber Error number [0...